繁体   English   中英

如何将这个 SQL 转换为 Linq?

[英]How can I convert this SQL to Linq?

我有一个问题:

select siniflar.id,siniflar.sinif,count(ogrenciId) 
  from siniflar
  left join oda
  on siniflar.id=oda.sinifId
  where siniflar.ogretmenid=2
  group by siniflar.id,siniflar.sinif

这是我对 Linq 的转换:

  from snf in db.siniflar
     join oda in db.oda
     on snf.id equals oda.sinifId
     where snf.ogretmenid==oID
     group oda by new
     {
     snf.id,snf.sinif
     } into g 
     select new
     {
     sinifIDsi=g.Key.id,
     sinifADi=g.Key.sinif,
     Column1 = g.Count()
     })

我也想要空计数的结果,但我无法适应 left 或 right join to linq with group by。 DefaultIfEmpty() 方法不起作用。 谁能帮我?

您可以添加DefaultIfEmpty()来计算左表的空计数,如以下查询:

var result = (from snf in db.siniflar
             join oda in db.oda on snf.id equals oda.sinifId into leftedOdatas
             from leftedOdata in leftedOdatas.DefaultIfEmpty()
             where snf.ogretmenid == 2
             group leftedOdata by new {snf.id, snf.sinif } into g 
             select new
             {
                 sinifIDsi = g.Key.id,
                 sinifADi = g.Key.sinif,
                 Column1 = g.Count(x => x?.sinifId != null)
             }).ToList();

我希望你觉得这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM