Wie erzwinge LINQ Sum (), um 0 zurückzugeben, während Quellsammlung leer ist
Grundsätzlich, wenn ich die folgende Abfrage, wenn keine leads aufeinander folgende Abfrage wirft eine Ausnahme. In diesem Fall würde ich es vorziehen, um die Summe auszugleichen 0 eher als eine Ausnahme ausgelöst wird.
Wäre dies möglich, in der Abfrage selbst - ich meine, anstatt speichern Sie die Abfrage und prüfen query.Any()
?
double earnings = db.Leads.Where(l => l.Date.Day == date.Day
&& l.Date.Month == date.Month
&& l.Date.Year == date.Year
&& l.Property.Type == ProtectedPropertyType.Password
&& l.Property.PropertyId == PropertyId).Sum(l => l.Amount);
InformationsquelleAutor der Frage John Mayer | 2013-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie Ihre Abfrage zu diesem:
Diese Weise wird die Abfrage nur wählen Sie die
Amount
Feld. Wenn die Sammlung leer ist, wird es wieder ein element mit dem Wert von0
und dann die Summe angewendet werden.InformationsquelleAutor der Antwort Simon Belanger
Ich lieber ein anderes hack:
InformationsquelleAutor der Antwort 2kay
Versuchen Sie stattdessen, es ' s kürzer:
InformationsquelleAutor der Antwort Kovács Róbert
InformationsquelleAutor der Antwort Mona
Update: Zwar eine funktionierende Lösung, diese Antwort ist falsch. Offensichtlich der richtige ist, gegeben durch Simon Belanger. Dennoch, anstatt zu löschen, lasse ich es hier als Ergänzende information (siehe Kommentare).
Das interessante detail ist hier, dass LINQ To SQL-Implementierung von
Sum
(das sind Sie natürlich mit) unterscheidet sich von der LINQ To Objects. Simon Belanger Antwort ist richtig, und ich mag es, aber (nicht zu weit suchen entfernt) eine weitere Möglichkeit, um diese arbeiten zu ändern, kompilieren Sie die Art der Quelle und die Verwendung von LINQ To Objects. Die verschiedenenSum
ausgeführt werden (ohne zusätzliche Operationen erforderlich):Vom MSDN:
InformationsquelleAutor der Antwort jwaliszko