Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd operatorn Sum för att beräkna summan av numeriska värden i en sekvens.
Observera följande egenskaper för operatorn Sum
i LINQ till SQL:
Aggregeringsoperatorn
Sum
Standard Query Operator utvärderas till noll för en tom sekvens eller en sekvens som endast innehåller nullvärden. I LINQ till SQL lämnas semantiken för SQL oförändrad. DärförSum
utvärderas till null i stället för till noll för en tom sekvens eller för en sekvens som endast innehåller null.SQL-begränsningar för mellanliggande resultat gäller för aggregeringar i LINQ till SQL. Summan av 32-bitars heltalskvantitet beräknas inte med hjälp av 64-bitarsresultat, och spill kan inträffa för LINQ till SQL-översättningen av
Sum
. Den här möjligheten finns även om implementeringen av Standard Query Operator inte orsakar ett spill för motsvarande minnesinterna sekvens.
Exempel 1
I följande exempel hittas den totala frakten för alla beställningar i Order
tabellen.
Om du kör den här frågan mot Northwind-exempeldatabasen kommer utdata att vara: 64942.6900
.
System.Nullable<Decimal> totalFreight =
(from ord in db.Orders
select ord.Freight)
.Sum();
Console.WriteLine(totalFreight);
Dim totalFreight = Aggregate ord In db.Orders _
Into Sum(ord.Freight)
Console.WriteLine(totalFreight)
Exempel 2
I följande exempel hittar du det totala antalet enheter på beställning för alla produkter.
Om du kör den här frågan mot Northwind-exempeldatabasen kommer utdata att vara: 780
.
Observera att du måste omvandla short
typer (till exempel UnitsOnOrder
) eftersom Sum
inte har någon överlagring för korta typer.
System.Nullable<long> totalUnitsOnOrder =
(from prod in db.Products
select (long)prod.UnitsOnOrder)
.Sum();
Console.WriteLine(totalUnitsOnOrder);
Dim totalUnitsOnOrder = Aggregate prod In db.Products _
Into Sum(prod.UnitsOnOrder)
Console.WriteLine(totalUnitsOnOrder)