web-dev-qa-db-ja.com

VB.NET LINQクエリ:特定の構造体メンバーのすべての値の合計を取得する

VB.NETで、次の構造があると仮定します。

Public Structure Product
    Public ItemNo As Int32
    Public Description As String
    Public Cost As Decimal
End Structure

...および製品の一般的なリスト:

Dim ProductsList As New List(Of Product)

Dim product1 As New Product

With product1
    .ItemNo = 100
    .Description = "Standard Widget"
    .Cost = 10D
End With

ProductsList.Add(product1)

Dim product2 As New Product

With product2
    .ItemNo = 101
    .Description = "Standard Cog"
    .Cost = 10.95D
End With

ProductsList.Add(product2)

Dim product3 As New Product

With product3
    .ItemNo = 101
    .Description = "Industrial Strenght Sprocket"
    .Cost = 99.95D
End With

ProductsList.Add(product3)

リスト内のすべてのProduct.Cost値を合計するLINQクエリを定義するにはどうすればよいですか?言い換えると、1つのLINQクエリの3つの製品コスト値すべての合計を反映する値120.90を返すVB.NETのLINQクエリは何でしょうか。

18
ClockEndGooner

組み込みのSumメソッドはすでにこれを行っています。

VBでは次のようになります:

ProductList.Sum(Function(item) item.Cost)

C#では次のようになります。

ProductsList.Sum( (item) => item.Cost);
39
McKay

1つの方法は次のとおりです。

Dim s = (From p As Product In products Select p.Cost).Sum()
3
eidylon