Cyl*_*ric 5 vb.net linq-to-sql
不确定这只是一个坏习惯,还是一种有效的做事方式,但对于跨越一堆表的大型复杂报表查询,我经常通过汇总一个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)
Run Code Online (Sandbox Code Playgroud)
我将如何在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)}
Run Code Online (Sandbox Code Playgroud)
我需要总结.Special和.Magical价值观.
(实际上,查询跨越了几个由事件预订信息组成的表,并且是否对记录进行求和的决定取决于其中几个字段中的字段)
小智 1
var specialSum = DB.Orders.Sum (o => o.Type == "Special" ? 1 : 0)
var magicalSum = DB.Orders.Sum (o => o.Type == "Magical" ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)
或者:
var specialSum = DB.Orders.Count (o => o.Type == "Special")
var magicalSum = DB.Orders.Count (o => o.Type == "Magical")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3177 次 |
| 最近记录: |