Sum使用運算子來計算序列中的數值總和。
請注意 LINQ to SQL 中運算子的 Sum 下列特性:
標準查詢運算符匯總運算符
Sum會針對空序列或只包含Null的序列評估為零。 在 LINQ to SQL 中,SQL 的語意會保持不變。 基於這個理由,Sum對空序列或只包含 null 的序列評估為 null,而非零。中繼結果的 SQL 限制適用於 LINQ to SQL 中的匯總。 32 位整數數量的總和不會使用 64 位結果來計算,而且 LINQ to SQL 轉譯
Sum可能會發生溢位問題。 即使標準查詢運算符實作不會對對應的記憶體內部序列造成溢位,也存在這種可能性。
範例 1
下列範例會尋找數據表中 Order 所有訂單的總貨運量。
如果您針對 Northwind 範例資料庫執行此查詢,則輸出為: 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)
範例 2
下列範例計算所有產品訂購的單位總數。
如果您針對 Northwind 範例資料庫執行此查詢,則輸出為: 780。
請注意,您必須轉換 short 類型(例如 UnitsOnOrder),因為 Sum 短型別沒有多載。
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)