不确定这只是一个坏习惯,还是一种有效的做事方式,但对于跨越一堆表的大型复杂报表查询,我经常通过总结一个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 ",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")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。