Delen via


De som van waarden berekenen in een numerieke reeks

Gebruik de Sum operator om de som van numerieke waarden in een reeks te berekenen.

Let op de volgende kenmerken van de Sum operator in LINQ naar SQL:

  • De statistische operator Sum Standard Query Operator evalueert naar nul voor een lege reeks of een reeks die alleen null-waarden bevat. In LINQ naar SQL blijven de semantiek van SQL ongewijzigd. Sum Daarom wordt null geĆ«valueerd in plaats van nul voor een lege reeks of voor een reeks die alleen null-waarden bevat.

  • SQL-beperkingen voor tussenliggende resultaten zijn van toepassing op aggregaties in LINQ naar SQL. De som van 32-bits gehele getallen wordt niet berekend met behulp van 64-bits resultaten en overloop kan optreden voor de LINQ naar SQL-vertaling van Sum. Deze mogelijkheid bestaat zelfs als de implementatie van de Standard-queryoperator geen overloop veroorzaakt voor de bijbehorende in-memory-reeks.

Voorbeeld 1

In het volgende voorbeeld wordt de totale vracht van alle orders in de Order tabel gevonden.

Als u deze query uitvoert op de northwind-voorbeelddatabase, is de uitvoer: 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)

Voorbeeld 2

In het volgende voorbeeld wordt het totale aantal eenheden op bestelling voor alle producten gevonden.

Als u deze query uitvoert op de northwind-voorbeelddatabase, is de uitvoer: 780.

Houd er rekening mee dat u typen moet casten short (bijvoorbeeld UnitsOnOrder) omdat Sum er geen overbelasting is voor korte typen.

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)

Zie ook