using System;
using System.Linq;
using System.Collections.Generic;
class Item{
public string ItemName { get; set; }
public string GroupName { get; set; }
}
public class Test
{
public static void Main()
{
List<Item> webservice = new List<Item>() {
new Item(){ItemName="Item1",GroupName="A"},
new Item(){ItemName="Item2",GroupName="B"},
new Item(){ItemName="Item3",GroupName="B"},
new Item(){ItemName="Item4",GroupName="A"},
new Item(){ItemName="Item5",GroupName="A"},
};
var groupItems =
webservice.Where(i => i.GroupName != null)
.GroupBy(i => i.GroupName)
.Select(grp => new { Group=grp.Key,Items=grp.ToList()});
foreach (var groupItem in groupItems)
Console.WriteLine("Groupname: {0} Items: {1}"
, groupItem.Group
, string.Join(",", groupItem.Items.Select(i => i.ItemName).ToArray()));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpjbGFzcyBJdGVtewogICBwdWJsaWMgc3RyaW5nIEl0ZW1OYW1lIHsgZ2V0OyBzZXQ7IH0KICAgcHVibGljIHN0cmluZyBHcm91cE5hbWUgeyBnZXQ7IHNldDsgfQp9CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgICAgIExpc3Q8SXRlbT4gd2Vic2VydmljZSA9IG5ldyBMaXN0PEl0ZW0+KCkgeyAKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCl7SXRlbU5hbWU9Ikl0ZW0xIixHcm91cE5hbWU9IkEifSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCl7SXRlbU5hbWU9Ikl0ZW0yIixHcm91cE5hbWU9IkIifSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCl7SXRlbU5hbWU9Ikl0ZW0zIixHcm91cE5hbWU9IkIifSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCl7SXRlbU5hbWU9Ikl0ZW00IixHcm91cE5hbWU9IkEifSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCl7SXRlbU5hbWU9Ikl0ZW01IixHcm91cE5hbWU9IkEifSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIGdyb3VwSXRlbXMgPQogICAgICAgICAgICAgICAgd2Vic2VydmljZS5XaGVyZShpID0+IGkuR3JvdXBOYW1lICE9IG51bGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgLkdyb3VwQnkoaSA9PiBpLkdyb3VwTmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAuU2VsZWN0KGdycCA9PiBuZXcgeyBHcm91cD1ncnAuS2V5LEl0ZW1zPWdycC5Ub0xpc3QoKX0pOwogICAgICAgICAgICBmb3JlYWNoICh2YXIgZ3JvdXBJdGVtIGluIGdyb3VwSXRlbXMpCiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiR3JvdXBuYW1lOiB7MH0gSXRlbXM6IHsxfSIKICAgICAgICAgICAgICAgICAgICAsIGdyb3VwSXRlbS5Hcm91cAogICAgICAgICAgICAgICAgICAgICwgc3RyaW5nLkpvaW4oIiwiLCBncm91cEl0ZW0uSXRlbXMuU2VsZWN0KGkgPT4gaS5JdGVtTmFtZSkuVG9BcnJheSgpKSk7CQoJfQp9