2012-04-18 78 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()) 

我也想擁有這個DataRow中的IEnumerable,因爲我將要創建的是一個DataTable與

Dim yyyyy As DataTable = query8.CopyToDataTable 
+0

您是否試圖從記錄中總結所有狀態字段? – 2012-04-18 06:17:09

+0

我想總結組中的所有狀態字段 – KevinDeus 2012-04-18 06:18:54

+1

您是否已經查看了[Aggregate clause](http://msdn.microsoft.com/zh-cn/library/bb531251.aspx)? – Heinzi 2012-04-18 06:19:41

回答

1

只需要打一個電話添加到您想要的聚合方法,且任選添加結果的別名。

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 

請注意,有很多方法可以編寫,這只是一種方法。

+0

總體情況!謝謝! – KevinDeus 2012-04-18 06:55:39

+0

有沒有辦法讓同一個DataTable中的所有3個值? – KevinDeus 2012-04-18 07:05:18

+0

所有3個值?你究竟是什麼意思? – 2012-04-18 14:01:23