Why isn\'t the following group by clause working? The original question was how do I perform group in LINQ inside vb code (dot.net v4.0) with DataTable and sum on the group?
Dim testQuery =
(From e In table
Group e By Key = New With {.GroupName = e("GroupName")}.GroupName,
New With {.ProductName = e("ProductName")}.ProductName Into Group
Select New With {
.ProductName = ProductName,
.QTY = Group.Sum(Function(x) Convert.ToInt32(x("QTY"))),
.GroupName = Key.ToString
})
In VB.NET, the syntax for grouping by composite keys is comma-separated keys, not an anonymous type:
(From e In table
Group e By
GroupName = e("GroupName"),
ProductName = e("ProductName")
Into Group
Select New With {
.ProductName = ProductName,
.QTY = Group.Sum(Function(x) Convert.ToInt32(x("QTY"))),
.GroupName = GroupName
})
With your syntax, it just uses the default equality comparer on the anonymous objects, which doesn't compare the fields.