2012-04-18 9 views
1

私は "ステータス"フィールドの合計を探しています。このlinqクエリにSum()を挿入するにはどうすればよいですか?

Dim _detailRecords As New DataTable 
    _detailRecords.Columns.Add("y") 
    _detailRecords.Columns.Add("z") 
    _detailRecords.Columns.Add("A", GetType(Int32)) 

    Dim workRow As DataRow 
    Dim i As Integer 

    For i = 1 To 3 
     workRow = _detailRecords.NewRow() 
     workRow(0) = i.ToString() 
     workRow(1) = "CustName" & i.ToString() 
     workRow(2) = i + 1 
     _detailRecords.Rows.Add(workRow) 
    Next 

    For i = 1 To 3 
     workRow = _detailRecords.NewRow() 
     workRow(0) = i.ToString() 
     workRow(1) = "CustName" & i.ToString() 
     workRow(2) = i + 1 
     _detailRecords.Rows.Add(workRow) 
    Next 

Dim query8 As IEnumerable(Of DataRow) = (From record As DataRow In _detailRecords _ 
    Group record By y = record.Field(Of String)("y"), _ 
        z = record.Field(Of String)("z"), _ 
        Status = record.Field(Of Int32)("Status") Into groupedRecords = Group _ 
Select groupedRecords.FirstOrDefault()) 

私も、私はそれからのデータテーブルを作成することになりますので、ちょうどあなたがしたい集計メソッドの呼び出しを追加し、必要に応じて追加

Dim yyyyy As DataTable = query8.CopyToDataTable 
+0

レコードからすべてのステータスフィールドを合計しようとしていますか? –

+0

グループ内のすべてのステータスフィールドを合計しようとしています – KevinDeus

+1

[Aggregate clause](http://msdn.microsoft.com/en-us/library/bb531251.aspx)をご覧になりましたか? – Heinzi

答えて

1

とのDataRowのIEnumerableをとして、これを維持したいですよ結果のエイリアス

Dim query = 
    From record In _detailRecords 
    Group record 
     By Y = record.Field(Of String)("y"), 
      Z = record.Field(Of String)("z"), 
      Status = record.Field(Of Int32)("Status") 
     Into groupedRecords = Group, 
      Sum(record.Field(Of Int32)("Status")) ' Get the sum of the Status values 
    Select FirstRecord = groupedRecords.FirstOrDefault, 
      Sum 

これは多くの方法で記述できますが、これは単なる1つの方法です。

+0

総スパイス!ありがとうございました! – KevinDeus

+0

同じDataTableに3つの値をすべて取得する方法はありますか? – KevinDeus

+0

3つの値はどれですか?どういう意味? –

関連する問題