Was ist der beste Weg, um den Max-Wert aus einer LINQ-Abfrage zu erhalten, die möglicherweise keine Zeilen zurückgibt? Wenn ich es nur tue
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önnte
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 Berechtigungszähler von einer untergeordneten Tabelle abzurufen (Legacy-System, lass mich nicht anfangen ...). Die erste Berechtigungszeile für jeden Patienten ist immer 1, die zweite 2 usw. (dies ist offensichtlich nicht der Primärschlüssel der untergeordneten Tabelle). Also wähle ich den maximal vorhandenen Zählerwert für einen Patienten aus und füge dann 1 hinzu, um eine neue Zeile zu erstellen. Wenn keine untergeordneten Werte vorhanden sind, muss die Abfrage 0 zurückgeben (wenn Sie also 1 hinzufügen, erhalten Sie einen Zählerwert von 1). Beachten Sie, dass ich mich nicht auf die rohe Anzahl der untergeordneten Zeilen verlassen möchte, falls die Legacy-App Lücken in den Zählerwerten einführt (möglich). Mein schlechtes für den Versuch, die Frage zu allgemein zu machen.