Gewusst wie: Berechnen der Summe von Werten in einer numerischen Sequenz (LINQ to SQL)
Aktualisiert: November 2007
Verwenden Sie den Sum-Operator, um die Summe numerischer Werte in einer Sequenz zu berechnen.
Beachten Sie die folgenden Merkmale des Sum-Operators in LINQ to SQL:
Der Sum-Operator für Standardabfragen führt bei einer leeren Sequenz oder bei einer aus Nullen bestehenden Sequenz zum Ergebnis NULL. In LINQ to SQL bleibt die SQL-Semantik unverändert. Aus diesem Grund ergibt Sum bei einer leeren Sequenz oder bei einer aus Nullen bestehenden Sequenz den Wert NULL an Stelle von 0.
SQL-Einschränkungen für Zwischenergebnisse gelten in LINQ to SQL für Summen. Die Summe von 32-Bit-Ganzzahlen wird nicht mithilfe von 64-Bit-Ergebnissen berechnet, und bei der LINQ to SQL-Übersetzung von Sum kann es zu einem Überlauf kommen. Dies kann ggf. auch eintreten, wenn die standardmäßige Implementierung des Abfrageoperators bei der entsprechenden Sequenz im Arbeitsspeicher nicht zu einem Überlauf führt.
Beispiel
Im folgenden Beispiel wird die gesamte Fracht zu allen Bestellungen in der Tabelle Order ermittelt.
Wenn Sie diese Abfrage mit der Beispieldatenbank Northwind ausführen, lautet die Ausgabe 64942.6900. 64942.6900.
Dim totalFreight = Aggregate ord In db.Orders _
Into Sum(ord.Freight)
Console.WriteLine(totalFreight)
System.Nullable<Decimal> totalFreight =
(from ord in db.Orders
select ord.Freight)
.Sum();
Console.WriteLine(totalFreight);
Im folgenden Beispiel wird die Gesamtzahl von bestellen Einheiten für alle Produkte ermittelt.
Wenn Sie diese Abfrage mit der Beispieldatenbank Northwind ausführen, lautet die Ausgabe 780. 780.
Beachten Sie, dass Sie short-Typen (z. B. UnitsOnOrder) verwenden müssen, da Sum nicht über einen Überlauf für diese Typen verfügt.
Dim totalUnitsOnOrder = Aggregate prod In db.Products _
Into Sum(prod.UnitsOnOrder)
Console.WriteLine(totalUnitsOnOrder)
System.Nullable<long> totalUnitsOnOrder =
(from prod in db.Products
select (long)prod.UnitsOnOrder)
.Sum();
Console.WriteLine(totalUnitsOnOrder);
Siehe auch
Konzepte
Herunterladen von Beispieldatenbanken (LINQ to SQL)