Calcolare la somma dei valori in una sequenza numericaCompute the Sum of Values in a Numeric Sequence

Per calcolare la somma di valori numerici in una sequenza, usare l'operatore Sum.Use the Sum operator to compute the sum of numeric values in a sequence.

Di seguito sono riportate le caratteristiche dell'operatore Sum in LINQ to SQLLINQ to SQL:Note the following characteristics of the Sum operator in LINQ to SQLLINQ to SQL:

  • L'operatore di aggregazione Sum dell'operatore di query standard restituisce valori zero per tutte le sequenze vuote o che contengono solo valori null.The Standard Query Operator aggregate operator Sum evaluates to zero for an empty sequence or a sequence that contains only nulls. In LINQ to SQLLINQ to SQL la semantica di SQL rimane invariata.In LINQ to SQLLINQ to SQL, the semantics of SQL are left unchanged. Per questo motivo Sum restituisce null anziché zero per una sequenza vuota o per una sequenza che contiene solo valori null.For this reason, Sum evaluates to null instead of to zero for an empty sequence or for a sequence that contains only nulls.

  • Le limitazioni di SQL sui risultati intermedi vengono applicate agli aggregati in LINQ to SQLLINQ to SQL.SQL limitations on intermediate results apply to aggregates in LINQ to SQLLINQ to SQL. La somma delle quantità di valori integer a 32 bit non è calcolata utilizzando risultati a 64 bit e overflow può verificarsi per i LINQ to SQLLINQ to SQL traduzione Sum.Sum of 32-bit integer quantities is not computed by using 64-bit results, and overflow can occur for the LINQ to SQLLINQ to SQL translation of Sum. Questa possibilità esiste anche se l'implementazione dell'operatore di query standard non provoca un overflow per la corrispondente sequenza in memoria.This possibility exists even if the Standard Query Operator implementation does not cause an overflow for the corresponding in-memory sequence.

EsempioExample

Nell'esempio seguente viene cercato il costo di trasporto complessivo di tutti gli ordini contenuti nella tabella Order.The following example finds the total freight of all orders in the Order table.

Se si esegue questa query sul database di esempio Northwind, l'output sarà: 64942.6900.If you run this query against the Northwind sample database, the output is: 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)

EsempioExample

Nell'esempio seguente viene cercato il numero complessivo di unità ordinate per tutti i prodotti.The following example finds the total number of units on order for all products.

Se si esegue questa query sul database di esempio Northwind, l'output sarà: 780.If you run this query against the Northwind sample database, the output is: 780.

Notare che è necessario eseguire il cast dei tipi short, ad esempio UnitsOnOrder, in quanto in Sum non è disponibile alcun overload per tali tipi.Note that you must cast short types (for example, UnitsOnOrder) because Sum has no overload for short types.

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)

Vedere ancheSee Also

Query di aggregazioneAggregate Queries
Download di database di esempioDownloading Sample Databases