我目前正在使用实体框架构建应用程序。通常我会使用存储过程从我的数据库中获取特定数据,但现在我正在尝试实体框架。
现在我面临一个小小的挑战。我有一个事件日志表,其中包含主键,事件ID和一些数据字段。我需要为每个事件获取所有最新的行。 sql非常简单:
从eventLog t中选择* join(在IncidentId中选择incidentId,max(id)作为来自eventsLog组的id)tt在t.id = tmp.id
如何将此转换为linq到实体? 我可以在一次操作中完成它,还是应该使用存储过程?
答案 0 :(得分:1)
这应该可以解决问题:
var query =
(from i in context.IncidentLogs
group i by i.IncidentId into g
let maxID = g.Max(i => i.id)
select g.Where(i => i.id == maxID)).ToList();