在Linq表达式中使用可空类型

sha*_*shi 4 c# linq nullable

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
    };
Run Code Online (Sandbox Code Playgroud)

在我的select表达式中,我想选择一个可以为空的类型WasCorrect(表达式的最后一部分),但显然我不能按照我目前的方式去做.

如何将WasCorrect作为可空类型

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

Kon*_*lph 6

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

WasCorrect = userAns.WasCorrect.HasValue ?
    userAns.WasCorrect.Value : (TheTypeName?)null
Run Code Online (Sandbox Code Playgroud)

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

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

WasCorrect = userAns.WasCorrect
Run Code Online (Sandbox Code Playgroud)