我有以下两个对象:
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()
函数内部有一个布尔值,我不知道还有什么可以放在那里。
答案 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();