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中也没有给出错误。
答案 0 :(得分:6)
您需要明确地将null
值转换为可空类型:
WasCorrect = userAns.WasCorrect.HasValue ?
userAns.WasCorrect.Value : (TheTypeName?)null
否则C#将不知道条件表达式应该是哪种类型。
除此之外,代码完全是多余的。你可以简单地写一下:
WasCorrect = userAns.WasCorrect
答案 1 :(得分:1)
你绝对必须能够写
select new { WasCorrect = userAns.WasCorrect }
如果userAns.WasCorrect
是Nullable<bool>
。
此代码执行没有问题:
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 };
}
}