Я не большой на VB, боюсь, но в C # вы могли бы сделать что-то вроде этого:
var items = new List<Item>()
{
new Item() { Id = 0, Name = "Joe", City = "New York", Phone = "111-111-1111", IsWorking = false },
new Item() { Id = 1, Name = "Helen", City = "LA", Phone = "222-222-2222", IsWorking = false },
new Item() { Id = 2, Name = "Mary", City = "Chicago", Phone = "333-333-3333", IsWorking = true },
new Item() { Id = 3, Name = "Joe", City = "New York", Phone = "444-444-4444", IsWorking = true }
};
var results = from i in items
group i by new { i.Name, i.City }
into x
select new { Key = x.Key, Values = from a in x select new { ID = a.Id, a.IsWorking }};
Это обеспечивает вывод:
Key: { Name = Joe, City = New York }
Values: { ID = 0, IsWorking = false }
{ ID = 3, IsWorking = true }
Key: { Name = Helen, City = LA }
Values: { ID = 1, IsWorking = false }
Key: { Name = Mary, City = Chicago }
Values: { ID = 0, IsWorking = true }
IПопробую и предоставлю перевод на VB позже, если кто-то другой не доберется туда первым!