我有一个查询连接两个表是标题和详细信息表,在having子句中我必须检查标题的总标记是否应该等于详细标记的总和。
查询是: -
select h.ExamID,h.ExamID,max(h.TotalMark) as TotalMark
from ExamMasters h
join ExamDetails d on h.ExamID=d.ExamID
group by h.ExamID,h.ExamName
having max(h.TotalMark)=sum(d.Mark)
我只想将此查询转换为linq语法。 请有人帮忙。
此致 阿吉特
答案 0 :(得分:0)
应该是:
var res = from h in ExamMasters
join d in ExamDetails on h.ExamID equals d.ExamID
group new { h, d } by new { h.ExamID, h.ExamName } into hdg
let max = hdg.Max(x => x.h.TotalMark)
where hdg.Sum(x => x.d.Mark) == max
select new
{
hdg.Key.ExamID, hdg.Key.ExamName, TotalMark = max
};
请注意使用group
... by
... into
以及在群组之后同时拥有h
和d
的事实我不得不把它们放在new { h, d }
。