Verwenden von auf null festlegbaren Typen in Linq-Ausdrücke
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
};
In meinem select-Ausdruck möchte ich wählen Sie eine nullable-Typ WasCorrect (letzter Teil des Ausdrucks) aber anscheinend kann ich nicht tun es so, wie ich bin versucht derzeit.
Wie bekomme ich WasCorrect als nullable-Typ
Habe ich versucht ?WasCorrect aber auch nicht, gibt Fehlermeldung in Visual Studio.
- Und was war die eigentliche Sie-Fehler, den Sie gestoßen?
- tut ?WasCorrect = userAns.WasCorrect nicht funktionieren?
- Nein, ich bekomme die folgende Fehlermeldung, wenn ich tun ?WasCorrect Syntax Fehler "," erwartet
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie werfen die
null
Wert des nullable-Typ explizit:Ansonsten C# weiß nicht, welche Art der bedingte Ausdruck sein sollte.
Davon abgesehen, der code ist komplett überflüssig. Sie können einfach schreiben:
null
? wow, noch nie aber haben wir jemals benötigt, um zu tun.var val = null; //null what?
WasCorrect = userAns.WasCorrect.Value
versehentlich statt.var b = (bool)x.WasCorrect;
(oder was auch immer Art es ist)Müssen Sie absolut in der Lage zu schreiben
wenn
userAns.WasCorrect
istNullable<bool>
.Dieser code wird ausgeführt, ohne ein problem: