比如说,我的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课程都可以使用更方便的聚合方法.有没有?
你可以使用LINQ的Select扩展来更简洁,虽然没有像"pluck"方法通过名称获取属性(因为这需要反射):
var fleaInEachDogs = manyDogs.Select(dog => dog.flea);
Run Code Online (Sandbox Code Playgroud)
(使用ToList()上IEnumerable得到完全像你原来的代码清单).