-1

比如说,我的 Dog 班还有另一个班,Flea。

class Dog
{
   public Flea flea;
}

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

目前我会这样做:

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

List但我认为所有班级肯定都可以使用更方便的聚合方法。有没有存在?

4

1 回答 1

8

您可以使用 LINQ 的Select扩展使其更简洁,尽管没有什么比“pluck”方法更能按名称获取属性(因为这需要反射):

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

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

于 2013-04-20T18:26:29.670 回答