Linq组仅具有最大值

时间:2017-06-29 00:44:53

标签: c# linq linq-to-sql group-by

我有以下情况: 一个表Employee,如:

----------
Id, Name, ....
----------

和其他包含员工信息的表格,每天都是新的,例如:

EmployeeInfo
----------
EmployeeId, Date, someinfo
----------

所有这些都映射在实体框架上。 一个例子是:

Employee:
----------
id        Name
----------
1         Ep1
----------
2         Ep2
----------
EmployeeInfo
----------
EmployeeId     Date           someinfo
----------------------------------------
01            06/28/17        Infox
----------------------------------------
01            05/28/17        Infoy
----------------------------------------
02            05/27/17        Infog
----------------------------------------
02            05/25/17        Infoh
----------------------------------------

我想使用linq查询此数据。我的目标是从EmployeeInfo中搜索员工和最新信息。 我的策略是使用groupby和max搜索所有employeeInfo并检索如下结构:

  

IGrouping <string, EmployeeInfo>   返回数据的示例:

<"01", EmployeeInfo>
<"02", EmployeeInfo>

其中EmployeeInfo包含每个员工的最后数据

唯一的解决方案是使用select new并将max设置为: https://stackoverflow.com/a/10086118/4580924

有没有与上述链接不同的解决方案?

1 个答案:

答案 0 :(得分:0)

如果要选择某个属性为max的记录,而不是该max属性本身的值,请使用OrderBy后跟First,如下所示:

from e in Employee
join ei in EmployeeInfo on e.EmployeeId equals ei.EmployeeId
group e by e.EmployeeId into g
select g.OrderByDescending(ge => ge.Date).First()