Imports System.Collections.Generic
Property Colour As String
Property Doors As Integer
Dim cars = New List(Of Car) _
From {New Car With {.Colour = "Blue", .Make = "Ford", .Doors = 5},
New Car With {.Colour = "Blue", .Make = "Ford", .Doors = 2},
New Car With {.Colour = "Red", .Make = "Pontiac", .Doors = 3},
New Car With {.Colour = "Green", .Make = "Nissan", .Doors = 3},
New Car With {.Colour = "Blue", .Make = "Ford", .Doors = 5},
New Car With {.Colour = "Blue", .Make = "Pontiac", .Doors = 4},
New Car With {.Colour = "Green", .Make = "Nissan", .Doors = 5},
New Car With {.Colour = "Blue", .Make = "Volkswagen", .Doors = 5},
New Car With {.Colour = "Red", .Make = "Pontiac", .Doors = 3},
New Car With {.Colour = "Blue", .Make = "Nissan", .Doors = 2},
New Car With {.Colour = "Red", .Make = "Volkswagen", .Doors = 5},
New Car With {.Colour = "Blue", .Make = "Ford", .Doors = 5}}
Dim groupedList = (From c In cars
Group By c.Make Into Group
Select New With {.Make = Make,
.Colours = Group.Count(Function(x) x.Colour),
.TotalDoors = Group.Sum(Function(x) x.Doors)}).ToList()
For Each g In groupedList
Console.Out.WriteLine("Make {0}, Cars {1}, Doors {2}, Colours {3}", g.Make, g.Cars, g.TotalDoors, g.Colours)