C# 带SUM()连接的LINQ

C# 带SUM()连接的LINQ,c#,linq,sql-to-linq-conversion,C#,Linq,Sql To Linq Conversion,我正在尝试将这个SQL语句翻译成LINQ,但我对LINQ非常陌生 select professor.nom, professor.llinatge, SUM(case when falta.aprovada = 1 then 1 else 0 end) as FJ, SUM(case when falta.aprovada = 0 then 1 else 0 end) as FNJ from falta inner join professor on falta.id_profe = profe

我正在尝试将这个SQL语句翻译成LINQ,但我对LINQ非常陌生

select professor.nom, professor.llinatge,
SUM(case when falta.aprovada = 1 then 1 else 0 end) as FJ,
SUM(case when falta.aprovada = 0 then 1 else 0 end) as FNJ
from falta inner join professor on falta.id_profe = professor.id_profe
group by professor.llinatge, professor.nom
我不能在LINQ和JOIN一起工作。我在林克对此最好的解释是:

var query = from f in db.falta
join p in db.professor
on f.id_profe equals p.id_profe
group f by new {p.nom, p.llinatge, f.aprovada} into g
select new 
{
    nombre = g.Key.nom + " "+ g.Key.llinatge,
    fj = g.Select(s=> s.aprovada == true).Count(),
    fnj = g.Select(s=> s.aprovada == false).Count()
 };

谢谢大家!

你可以试试。。。多年来,我一直认为这是一个非常方便的工具……

你可以试试。。。多年来,我一直认为这是一个非常方便的工具…

最终我找到了与我的SQL语句匹配的LINQ查询:

from falta in db.Falta
join professor in db.Professor on falta.Id_profe equals professor.Id_profe
group new {professor, falta} by new {
  professor.Llinatge,
  professor.Nom
} into g
select new {
  g.Key.Nom,
  g.Key.Llinatge,
  FJ = (System.Int64?)g.Sum(p => (
  p.falta.Aprovada == true ? 1 : 0)),
  FNJ = (System.Int64?)g.Sum(p => (
  p.falta.Aprovada == false ? 1 : 0))
};

谢谢你的帮助!希望这有帮助

最后我找到了与我的SQL语句匹配的LINQ查询:

from falta in db.Falta
join professor in db.Professor on falta.Id_profe equals professor.Id_profe
group new {professor, falta} by new {
  professor.Llinatge,
  professor.Nom
} into g
select new {
  g.Key.Nom,
  g.Key.Llinatge,
  FJ = (System.Int64?)g.Sum(p => (
  p.falta.Aprovada == true ? 1 : 0)),
  FNJ = (System.Int64?)g.Sum(p => (
  p.falta.Aprovada == false ? 1 : 0))
};

谢谢你的帮助!希望这有帮助

为什么您的LINQ版本中有
group by f.aprovada
,而SQL版本中没有?您是正确的,我的查询不需要它。我被困在这一部分了…“我找不到工作”-你能说得更具体些吗?你犯了什么错误?这不是错误。此查询的结果不是我从SQL查询中预期的结果。为什么您的LINQ版本中有
group by f.aprovada
,而SQL版本中没有?您是正确的,我的查询不需要它。我被困在这一部分了…“我找不到工作”-你能说得更具体些吗?你犯了什么错误?这不是错误。此查询的结果不是我从SQL查询中预期的结果。谢谢。我已经测试了这些工具,但无法使用LINQpad将SQL转换为LINQ,并且SQL转换为LINQ不是免费的。我不是专家…谢谢你,我终于可以下载Linqer的试用版了!非常感谢。我已经测试了这些工具,但无法使用LINQpad将SQL转换为LINQ,并且SQL转换为LINQ不是免费的。我不是专家…谢谢你,我终于可以下载Linqer的试用版了!