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

标签 c# lambda

我有以下两个对象:

ProjectPrimitives:
   Name
   ProjectId
   StartDate

ProjectDetails
   ProjectPrimitives
   Description
   Location
   // Other details

在我的应用程序中,我有一个 List<ProjectDetails>并想从中解析所有原语以获得 List<ProjectPrimitives>使用 lambda 表达式。实际上,我想替换这个:

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

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

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

但是编译器期望 Where() 中有一个 bool 值功能,我不知道还有什么可以放在那里。

最佳答案

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

关于c# - 编写 lambda 表达式以从对象列表中获取属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27725298/

相关文章:

java - 正确使用 Optional.ifPresent()

c# - 在列表上创建哈希值?

c# - 将列表保存到数据库

c# - 处理 C# 表达式树中嵌套对象的空值

java - 返回参数类型受泛型类型参数约束的 lambda 函数

c++ - 在用作槽的 lambda 函数中捕获的堆栈分配变量的生命周期是多少?

c# - MaskedTextProvider C#

c# - 如何将控件绑定(bind)到 DataGridView

c# - 将存储过程中的 Select Query 的结果返回到列表

c++ - 接受对任何类型的可变引用的 Lambda