C# 从列表中,返回每个原始列表属性的新列表?

C# 从列表中,返回每个原始列表属性的新列表?,c#,list,class,C#,List,Class,喂,我的狗课还有一门课,跳蚤 class Dog { public Flea flea; } 现在,如果我有一个狗的列表:列出许多狗 我怎样才能把那张单子变成一张狗的单子呢 目前我会这样做: List<Flea> fleaInEachDogs = new List<Flea>(); foreach(Dog d in manyDogs) { fleaInEachDogs.Add(d.flea); } 但我认为一个更方便的聚合方法肯定适用于所有列表类。有没有

喂,我的狗课还有一门课,跳蚤

class Dog
{
   public Flea flea;
}
现在,如果我有一个狗的列表:列出许多狗 我怎样才能把那张单子变成一张狗的单子呢

目前我会这样做:

List<Flea> fleaInEachDogs = new List<Flea>();
foreach(Dog d in manyDogs)
{
    fleaInEachDogs.Add(d.flea);
}
但我认为一个更方便的聚合方法肯定适用于所有列表类。有没有

您可以使用LINQ的Select扩展来更简洁地描述它,尽管没有什么比Pulk方法更能按名称获取属性,因为这需要反射:

var fleaInEachDogs = manyDogs.Select(dog => dog.flea);

使用该IEnumerable上的ToList可以获得与原始代码完全相同的列表。

您的跳蚤属性真的是私有的吗?您的跳蚤属性真的只是一个字段吗?对不起!这是公开的,不是私人的。问题编辑。@JohanLarsson:假设:@亨克奥尔特曼:两人都没有原始代码。这是指假设跳蚤是私人的。在实际答案中更明确地说明这一点是没有坏处的。对不起,问题输入错误。它是公共的而不是私人的。Select可以很好地工作。谢谢