Un ejemplo de multiples agrupamientos (Group by Max,Min,Average,Sum) desde un DataTable.
Dim query = From m In wDT.AsEnumerable
Group m By IDZona = m.Field(Of Int32)("IDZona"),
Zona = m.Field(Of String)("Zona")
Into ValorCosto = Sum(m.Field(Of Decimal)("ValorCosto")),
ValorProd = Sum(m.Field(Of Decimal)("ValorProd")),
DMax = Max(m.Field(Of Decimal)("Porcentaje")),
DMin = Min(m.Field(Of Decimal)("Porcentaje")),
DAvg = Average(m.Field(Of Decimal)("Porcentaje")),
UMax = Max(m.Field(Of Decimal)("Afectada")),
UMin = Min(m.Field(Of Decimal)("Afectada")),
UAvg = Average(m.Field(Of Decimal)("Afectada")),
Costos = Sum(m.Field(Of Decimal)("Costos"))
Select New With {IDZona, Zona, ValorCosto, ValorProd, DMax, DMin, DAvg, UMax, UMin, UAvg, Costos}