我有以下情况: 一个表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
有没有与上述链接不同的解决方案?
答案 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()