共用方式為


計算數值序列中的值總和

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)

另請參閱