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

Ada*_*331 1 c# lambda

我有以下两个对象:

ProjectPrimitives:
   Name
   ProjectId
   StartDate

ProjectDetails
   ProjectPrimitives
   Description
   Location
   // Other details
Run Code Online (Sandbox Code Playgroud)

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

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

我已经尝试过一些东西但是找不到正确的语法,如果这实际上可以使用lambda语句.我尝试过的一件事是:

var prims = myList.Where(i => i.primitives).ToList();
Run Code Online (Sandbox Code Playgroud)

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

Rhu*_*orl 6

如果ProjectDetails.primitives是单个ProjectPrimitives,则需要Select()将列表转换ProjectDetailsProjectPrimitives:

var prims = myList.Select(i => i.primitives).ToList();
Run Code Online (Sandbox Code Playgroud)

如果它是一个集合,例如List<ProjectPrimitives>,你需要SelectMany():

var prims = myList.SelectMany(i => i.primitives).ToList();
Run Code Online (Sandbox Code Playgroud)