我有一个这样的示例类:
SampleClass
{
string code;
int id;
string name;
}
该课程的有效数据为:
SampleClass{code= "code1", id= 1, name= "name1"}
SampleClass{code= "code1", id= 1, name= "name2"}
SampleClass{code= "code2", id= 2, name= "name1"}
SampleClass{code= "code2", id= 2, name= "name2"}
SampleClass{code= "code2", id= 2, name= "name3"}
现在的问题是,通过使用LINQ,我需要创建一个在SampleClass“id”字段上分组的TestClass集合。
TestClass结构如下:
TestClass
{
string code;
List<string> names;
}
其中“names”是按“id”分组的所有SampleClass“name”值的列表。
基于上面的SampleClass示例数据,我将有2个TestClass对象,一个用于id = 1,另一个用于id = 2
提前致谢
答案 0 :(得分:3)
var result = from c in collection
group c by c.id into g
select new TestClass {
code = g.First().code,
names = g.Select(i => i.name).ToList()
};
ps:我现在没有VS,我希望我在那里没有犯很多错误: - )
答案 1 :(得分:3)
好的,如果你有一个名为classes
的IEnumerable SampleClasses,试试这个:
var testClasses = classes
.GroupBy(c => c.id)
.Select(grp => new TestClass
{
code = grp.First().code,
names = grp.Select(c => c.name).ToList()
});
答案 2 :(得分:2)
MSDN有一些很棒的LINQ示例,包括使用分组来完成您的需要。您可以找到一个与您想要的内容类似的示例here。