Ich habe eine nicht nullable Feld (Num
)C# Entity Framework select max nach dem Filter nicht auf NULL festlegbare Bereich
class MyTable
{
//...
public int Num { get; set; }
public string Category { get; set; }
//...
}
wollen maximal finden Num
für Category == "A"
var maxnum = myTable
.Where(r => r.Category == "A")
.Max(r => r.Num);
das Problem aufgetreten ist, wenn es war keine Aufzeichnung von category == "A"
. Da das Ergebnis der Where()
null ist, so wird das Ergebnis von Max()
null sein, aber wenn Num
nicht NULL-Werte zulässt die Ausnahme aufgetreten ist.
Ich kann es beheben, indem Num
als Nullable in Tabelle Design, aber ich mag diese Lösung nicht, während Num
sollte Wert und sollte nicht Nullable sein.
Irgendwelche Vorschläge? Gibt es eine Möglichkeit, dass ich einen Nullwert für Num akzeptiere, während Num nicht nullbar ist? oder eine bessere Abfrage?
so, wenn die 'Wo. (R => r.Category.Equals („A“)' Teil der Abfrage ist null und 'Num' NULL ist nicht zulässig, würde ich erwarten, dass es eine Ausnahme geben, da gibt es keine Aufzeichnungen von 'Num' wo' Category.Equals ("A") '? so schauen Sie in' DefaultIfEmpty' –
See [DefaultIfEmpty()] (https://msdn.microsoft.com/en-us/library/ bb360179 (v = VS.100) .aspx) – sammarcow