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.

Antworten auf die Frage(34)

Ihre Antwort auf die Frage