我试图学习LINQ - 艰难的方式。 我有几个实体都按顺序连接 部门 - >群组 - >作品 - >项目 project有一个startdate(和结束日期)
我试图通过第一个开始日期来获得集团的开始日期。
我试过了:
Department.Groups.Select(g => g.Works.Select(w => w.project.StartDate).Min())
及其各种变化。 问题是它在列表中的列表中返回一个列表,并且我只是想到它而晕眩:)
我试图向后退路
g.Works.Select(w=> w.Project.StartDate).Min()
给了我最低的工作日期
非常感谢任何帮助
答案 0 :(得分:4)
使用SelectMany
展开您的列表,然后应用Min
,如:
var minDate = Department.Groups
.SelectMany(g => g.Works.Select(w => w.project.StartDate))
.Min();
这将返回所有Works
下所有Groups
的最短日期。
答案 1 :(得分:0)
如果您只想要约会,那么Habib的扁平解决方案就是好的。如果你想要整个记录,你可以订购,然后取第一条记录,如下所示:
Department
.Groups
.OrderBy(g => g.Works.Select(w => w.project.StartDate))
.FirstOrDefault()