1

この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

JOIN を使用した LINQ でこれを行うことができません。LINQ でのこれに対する私の最善のアプローチは次のとおりです。

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()
 };

ありがとうございました!

4

2 に答える 2

1

SQLtoLINQを試してみてください...そして何年にもわたって私は常にLinqPadを非常に便利なツールとして見つけました...

于 2012-05-13T03:10:07.690 に答える
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))
};

ご協力ありがとうございました!お役に立てれば!

于 2012-05-13T11:58:28.817 に答える