在LINQ表达式使用可空类型 [英] Using nullable types in Linq expressions

查看:215
本文介绍了在LINQ表达式使用可空类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

var quantSubset =
    from userAns in userAnalysis.AllUserAnswers
    join ques in userAnalysis.AllSeenQuestions on userAns.QID equals ques.QID
    where (ques.QuestionType == "QT")
    select new {
        QuestionLevel = ques.LevelID,
        TimeTaken = userAns.TimeTaken,
        Points = userAns.Points,
        UsedWeapon = (userAns.UsedBy2 && userAns.UsedHint),
        WasCorrect = userAns.WasCorrect.HasValue ? userAns.WasCorrect.Value : null
    };

在我的选择表达我要选择一个可空类型WasCorrect(表达式的最后一部分),但显然我不能做到这一点现在我想要的方式。

In my select expression I want to select a nullable type WasCorrect (last part of the expression) but apparently I cannot do it the way I am currently trying.

我怎样才能得到WasCorrect为可空类型

How can I get WasCorrect as nullable type

我试过吗?WasCorrect但也犯规给了错误的Visual工作室。

I tried ?WasCorrect but that also doesnt gives error in Visual Studio.

推荐答案

您需要将值显式转换为可空类型

You need to cast the null value to the nullable type explicitly:

WasCorrect = userAns.WasCorrect.HasValue ?
    userAns.WasCorrect.Value : (TheTypeName?)null



否则C#不知道哪种类型的条件式应

Otherwise C# won’t know which type the conditional expression should be.

除此之外,该代码是完全是多余的。你可以简单地写:

Apart from that, the code is completely redundant. You can simply write:

WasCorrect = userAns.WasCorrect

这篇关于在LINQ表达式使用可空类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆