Max oder Default?
Was ist der beste Weg, um den Max-Wert von einer LINQ-Abfrage zu erhalten, die möglicherweise keine Zeilen zurückgibt? Wenn ich nur mache
Dim x = (From y In context.MyTable _
Where y.MyField = value _
Select y.MyCounter).Max
Ich erhalte eine Fehlermeldung, wenn die Abfrage keine Zeilen zurückgibt. Ich könnt
Dim x = (From y In context.MyTable _
Where y.MyField = value _
Select y.MyCounter _
Order By MyCounter Descending).FirstOrDefault
aber das fühlt sich für eine so einfache Anfrage etwas stumpf an. Vermisse ich einen besseren Weg, es zu tun?
UPDATE: Hier ist die Hintergrundgeschichte: Ich versuche, den nächsten Berechtigungsindikator von einer Kindertabelle abzurufen (Legacy-System, fang nicht an ...). Die erste Berechtigungszeile für jeden Patienten ist immer 1, die zweite 2 usw. (offensichtlich ist dies nicht der Primärschlüssel der untergeordneten Tabelle). Also wähle ich den maximalen vorhandenen Zählerwert für einen Patienten aus und addiere dann 1 dazu, um eine neue Zeile zu erstellen. Wenn keine untergeordneten Werte vorhanden sind, muss die Abfrage 0 zurückgeben (das Hinzufügen von 1 gibt mir einen Zählerwert von 1). Beachten Sie, dass ich mich nicht auf die unformatierte Anzahl der untergeordneten Zeilen verlassen möchte, falls die Legacy-App Lücken in den Zählerwerten aufweist (möglich). Meine schlecht für den Versuch, die Frage zu generisch zu machen.