如何分组存储列表?
时间:2020-03-05 18:48:18 来源:igfitidea点击:
我有一个Foo
的清单。 Foo具有属性" Bar"和" Lum"。一些Foo
具有与Bar
相同的值。如何使用lambda / linq按Bar将我的Foo分组,以便可以遍历每个分组的Lum?
解决方案
回答
var q = from x in list group x by x.Bar into g select g; foreach (var group in q) { Console.WriteLine("Group " + group.Key); foreach (var item in group) { Console.WriteLine(item.Bar); } }
回答
迪诺
享受:
var foos = new List<Foo> { new Foo{Bar = 1,Lum = 1}, new Foo{Bar = 1,Lum = 2}, new Foo{Bar = 2,Lum = 3}, }; // Using language integrated queries: var q = from foo in foos group foo by foo.Bar into groupedFoos let lums = from fooGroup in groupedFoos select fooGroup.Lum select new { Bar = groupedFoos.Key, Lums = lums }; // Using lambdas var q = foos.GroupBy(x => x.Bar). Select(y => new {Bar = y.Key, Lums = y.Select(z => z.Lum)}); foreach (var group in q) { Console.WriteLine("Lums for Bar#" + group.Bar); foreach (var lum in group.Lums) { Console.WriteLine(lum); } }
要了解有关LINQ的更多信息,请阅读101 LINQ示例