得到"最低"父母和Linq的大孩子约会

时间:2015-03-11 20:37:33

标签: c# linq

我试图学习LINQ - 艰难的方式。 我有几个实体都按顺序连接 部门 - >群组 - >作品 - >项目 project有一个startdate(和结束日期)

我试图通过第一个开始日期来获得集团的开始日期。

我试过了: Department.Groups.Select(g => g.Works.Select(w => w.project.StartDate).Min())

及其各种变化。 问题是它在列表中的列表中返回一个列表,并且我只是想到它而晕眩:)

我试图向后退路 g.Works.Select(w=> w.Project.StartDate).Min()给了我最低的工作日期 非常感谢任何帮助

2 个答案:

答案 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()