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

本文关键字:列表 获取 属性 对象 lambda 表达式 编写 | 更新日期: 2023-09-27 18:35:44

我有以下两个对象:

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() 函数中有一个布尔值,我不知道还能放什么。

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

如果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();