编写lambda表达式以从对象列表中获取属性列表

时间:2014-12-31 19:04:22

标签: c# lambda

我有以下两个对象:

ProjectPrimitives:
   Name
   ProjectId
   StartDate

ProjectDetails
   ProjectPrimitives
   Description
   Location
   // Other details

在我的应用程序中,我有一个List<ProjectDetails>,并希望解析它们中的所有原语以使用lambda表达式获得List<ProjectPrimitives>。实际上,我想取代它:

var primList = new List<ProjectPrimitives>();
foreach(ProjectDetails pd in myDetailsList)
{
   primList.add(pd.primitives);
}

我已经尝试了一些但却找不到合适的语法,如果这实际上可以使用lambda语句。我尝试过的一件事是:

var prims = myList.Where(i => i.primitives).ToList();

但是编译器期望Where()函数内部有一个布尔值,我不知道还有什么可以放在那里。

1 个答案:

答案 0 :(得分:6)

如果ProjectDetails.primitives是一个ProjectPrimitives,您需要Select()将列表从ProjectDetails转换为ProjectPrimitives

var prims = myList.Select(i => i.primitives).ToList();

如果是集合,例如List<ProjectPrimitives>,则需要SelectMany()

var prims = myList.SelectMany(i => i.primitives).ToList();