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

5ar*_*gon -1 c# class list

比如说,我的Dog课上有另一个课,跳蚤.

class Dog
{
   public Flea flea;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一个狗列表:List<Dogs> manyDogs 我怎么能把这个列表变成一个List<Flea> fleaInEachDogs

目前我会这样做:

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

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

Ry-*_*Ry- 8

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

var fleaInEachDogs = manyDogs.Select(dog => dog.flea);
Run Code Online (Sandbox Code Playgroud)

(使用ToList()IEnumerable得到完全像你原来的代码清单).