Count 中的 LINQ Case 语句

发布于 2024-12-05 15:34:48 字数 308 浏览 1 评论 0原文

你能帮我把这个sql翻译成Linq吗:

select 
    count(case when t.TypeID = 1 then t.TypeID end) as a,
    count(case when t.TypeID = 2 then t.TypeID end) as b,
    count(case when t.TypeID = 3 then t.TypeID end) as c
from myTable t

我在网上搜索了一下,发现了一些类似的sql,但没有任何适合这个场景的。是否可以?

谢谢

Can you help me translate this sql into Linq please:

select 
    count(case when t.TypeID = 1 then t.TypeID end) as a,
    count(case when t.TypeID = 2 then t.TypeID end) as b,
    count(case when t.TypeID = 3 then t.TypeID end) as c
from myTable t

I've searched the internet and found some similar sql but nothing that fits this scenario. Is it possible?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月棠 2024-12-12 15:34:48

我想你想要这样的

var query = new
            {
              a = (context.MyTable.Where(t => t.TypeID == 1).Count(),
              b = (context.MyTable.Where(t => t.TypeID == 2).Count(),
              c = (context.MyTable.Where(t => t.TypeID == 3).Count(),
            }

编辑 - 如果你想在一个查询中完成所有内容,你可以这样做:

var query = from x in context.MyTable
            group x by 1 into xg
            select new
            {
              a = xg.Where(t => t.TypeID == 1).Count(),
              b = xg.Where(t => t.TypeID == 2).Count(),
              c = xg.Where(t => t.TypeID == 3).Count(),
            };

I think you want something like this

var query = new
            {
              a = (context.MyTable.Where(t => t.TypeID == 1).Count(),
              b = (context.MyTable.Where(t => t.TypeID == 2).Count(),
              c = (context.MyTable.Where(t => t.TypeID == 3).Count(),
            }

Edit - If you want it all in one query you could do this:

var query = from x in context.MyTable
            group x by 1 into xg
            select new
            {
              a = xg.Where(t => t.TypeID == 1).Count(),
              b = xg.Where(t => t.TypeID == 2).Count(),
              c = xg.Where(t => t.TypeID == 3).Count(),
            };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文