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

时间:2013-04-20 18:25:07

标签: c# list class

说,我的Dog课上还有另一个课,跳蚤。

class Dog
{
   public Flea flea;
}

现在,如果我有一个狗列表:List<Dogs> manyDogs 如何将该列表转换为List<Flea> fleaInEachDogs

目前我会这样做:

List<Flea> fleaInEachDogs = new List<Flea>();
foreach(Dog d in manyDogs)
{
    fleaInEachDogs.Add(d.flea);
}

但我认为所有List类都可以使用更方便的聚合方法。有没有?

1 个答案:

答案 0 :(得分:8)

你可以使用LINQ的Select扩展来更加简洁,虽然没有像“pluck”方法那样按名称获取属性(因为这需要反射):

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

(在ToList()上使用IEnumerable获取与原始代码完全相同的列表。)