Csharp/C#教程:在Linq表达式中使用可空类型分享


在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(表达式的最后一部分),但显然我不能按照我目前的方式来做。

如何将WasCorrect作为可空类型

我试过?WasCorrect但是在Visual Studio中也没有给出错误。

您需要显式地将null值强制转换为可空类型:

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

否则C#将不知道条件表达式应该是哪种类型。

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

 WasCorrect = userAns.WasCorrect 

你绝对必须能够写作

 select new { WasCorrect = userAns.WasCorrect } 

如果userAns.WasCorrectNullable

此代码执行没有问题:

上述就是C#学习教程:在Linq表达式中使用可空类型分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 class Test { public bool? NullableBool { get; set;} } class MainClass { public static void Main () { Test t1 = new Test { NullableBool = true }; var a1 = new { NB = t1.NullableBool }; Test t2 = new Test { NullableBool = null }; var a2 = new { NB = t2.NullableBool }; } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/989629.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐