gpt4 book ai didi

vb.net - LINQ 相当于 SUM(CASE WHEN X=Y THEN 1 ELSE 0 END) 是什么?

转载 作者:行者123 更新时间:2023-12-03 17:21:22 24 4
gpt4 key购买 nike

不确定这是否只是一个坏习惯,还是一种有效的做事方式,但对于跨越大量表的大型复杂报告查询,我经常通过对 Case 求和来获得我的汇总统计信息。陈述。

例如:

SELECT Contact.Name,
SUM(CASE WHEN Order.Type = 'Special' THEN 1 ELSE 0 END) AS SpecialOrders,
SUM(CASE WHEN Order.Type = 'Magic' THEN 1 ELSE 0 END) AS MagicOrders,
FROM Contact
LEFT JOIN Order ON (Contact.ContactID = Order.ContactID)

我将如何在 LINQ to SQL 中执行此操作? (在 vb.net 中,但我想任何 .Net 示例都可以)
Dim Orders = _
From Order In DB.Orders
Select New With {.Name = Contact.Name,
.Special = If(Order.Type = "Special", 1, 0),
.Magical = If(Order.Type = "Magical ", 1, 0)}

我需要总结 .Special.Magical值。

(实际上,查询跨越几个由事件预订信息组成的表,决定是否对记录求和取决于其中几个字段)

最佳答案

var specialSum = DB.Orders.Sum (o => o.Type == "Special" ? 1 : 0)
var magicalSum = DB.Orders.Sum (o => o.Type == "Magical" ? 1 : 0)

或者:
var specialSum = DB.Orders.Count (o => o.Type == "Special")
var magicalSum = DB.Orders.Count (o => o.Type == "Magical")

关于vb.net - LINQ 相当于 SUM(CASE WHEN X=Y THEN 1 ELSE 0 END) 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1445209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com