我有3个表A,其中包含ID和其他字段,B表示ID,C与A和B中的ID有多对多的关系
我做了一个查询,得到了我需要的结果
select result.*
from
(SELECT max(A.AID) as AID
FROM A, C
where A.AID = C.AID
group by C.BID) as x, A as result
where result.AID = x.AID
我希望将它转换为实体框架中的lambda表达式。但目前查询效率不高。我如何在EF中制作lamda表达式并使其更有效?
答案 0 :(得分:0)
如果您首先按照您想要的最大ID,然后在相关表格中对该ID进行GroupBy降序,那么从每个分组中选择第一个,您应该得到所需的结果。
var groupedResults = tempContext.A.OrderByDescending(a => a.AID
).GroupBy(group => group.C.AID).Select(group => group.FirstOrDefault());
这应该返回A实体的IQueryable,然后您可以根据需要继续修改其他子句。