不知道这是一种坏习惯还是一种行之有效的方式,但对于跨越一堆表的大型复杂报表查询,我总是通过总结Case
声明来获得我的总体统计数据。什么是LINQ相当于SUM(CASE当X = Y THEN 1 ELSE 0 END)?
例如:
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
值。
(在现实中,查询跨越几个表格组成的事件订票信息,并总结记录的决定或其中几个不依赖于域)
这就是C#,OP正在寻找VB.Net等价物。 – JaredPar 2009-09-18 15:25:10
“在vb.net中,但我想任何.Net示例都会做” - 这就是他所说的。恐怕我不会说VB。 – 2009-09-18 15:26:58
另外,这不会执行OP的sql查询所做的连接。 – paqogomez 2015-10-15 22:13:15