У меня есть выражение LINQ, которое выглядит примерно так
Dim DataRowDueTo = From row In DataTableDueTo.AsEnumerable
Where row.Field(Of UInt32)("Transaction") = 1 And {"A", "B", "C"}.Contains(row.Field(Of String)("Module"))
Group By x = New With {Key .CustID = row.Field(Of UInt32)("CustID"), Key .Module = row.Field(Of String)("Module")} Into g = Group
Select New With {
.CustID = x.CustID,
.Module = x.Module,
.Sum= g.Sum(Function(r) r.Field(Of Decimal)("Amount"))
}
''DataTableDueToFinal is a datatable i have precreated with columns (CustID,Module and Sum)
For Each grp In DataRowDueTo
DataTableDueToFinal.Rows.Add(grp.CustID, grp.Module, grp.Sum)
Next
По сути, у меня есть набор данных (из DataTable), которые я GROUP BY
2 столбца (CustID
и Module
) фильтровал, используя Where
на TransactionSource
и Module
.
Полученные результаты будут выглядеть примерно так
+--------+--------+-----+
| CustID | Module | Sum |
+--------+--------+-----+
| 1 | A | 50 |
+--------+--------+-----+
| 1 | B | 45 |
+--------+--------+-----+
| 2 | A | 23 |
+--------+--------+-----+
| 3 | A | 234 |
+--------+--------+-----+
| 3 | B | 76 |
+--------+--------+-----+
Моя проблема в том, что я пытаюсь воспроизвести те же результаты, используя другой подход, но не могу получить желаемые результаты.
Dim DataRowDueTo = DataTableDueTo.AsEnumerable().Where(Function(w) w.Field(Of UInt32)("Transaction") = 1 And {"A", "B", "C"}.Contains(w.Field(Of String)("Module"))) _
.GroupBy(Function(row) {row.Field(Of UInt32)("CustID"), row.Field(Of String)("Module")})
''DataTableDueToFinal is a datatable i have precreated with columns (CustID,Module and Sum)
For Each grp In DataRowDueTo
DataTableDueToFinal.Rows.Add(grp.Key(0), grp.Key(1), grp.Sum(Function(row) row.Field(Of Decimal)("Amount")))
Next
Кто-нибудь может указать, где я ошибся? Спасибо за ваше время и внимание.