我让人们反对,人们拥有使他们属于不同群体的属性(property)群体。
我想得到 List 并将它放在一个对象 GrouppedPeople 中,其中会有 List coll。一个 coll 元素只包含属于同一组的人。
所以如果我有 3 个人:
List<People>(){new People{Name="Test", Group = "Group1"},
new People{Name="SameGroup", Group = "Group1"},
new People{Name="Other", Group = "OtherGroup"}}
我需要收集 2 个 GrouppedPeople。第一个将包含 Test 和 SameGroup,第二个将包含其他(按 Group 属性分组)。我正在尝试使用 linq 来做到这一点。
我需要结果为 List 类型。 GrouppedPeople 是一个类,它只有一个 List 类型的属性,并且所有的人都来自同一组。
我想出了这样的事情:
from oneGroup in mates
group oneGroup by oneGroup.pGroupName into g
select g;
它工作正常,但结果对象不是强类型的。我喜欢 List 作为结果。有没有办法从匿名对象类型中获取它?有没有其他方法可以用 linq 实现这一切并保持强类型?
最佳答案
这将返回匿名类型对象的列表:
var result = (from oneGroup in mates
group oneGroup by oneGroup.pGroupName into g
select g).ToList();
但是如果你想返回特定类型的对象,你应该创建具有所需属性的新类:
public class MateGroup
{
public string Name {get;set;}
}
var result = (from oneGroup in mates
group oneGroup by oneGroup.pGroupName into g
select new MateGroup(){ Name = g.<field_name>}).ToList();
更新:
根据您的评论,请尝试以下操作:
var result = (from oneGroup in mates
group oneGroup by oneGroup.pGroupName into g
select new GrouppedPeople(){ People = g.ToList()}).ToList();
关于linq 对象分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5949295/