在Linq有条款

时间:2017-04-04 13:14:45

标签: linq

我有一个查询连接两个表是标题和详细信息表,在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语法。 请有人帮忙。

此致 阿吉特

1 个答案:

答案 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以及在群组之后同时拥有hd的事实我不得不把它们放在new { h, d }