如何使用流畅的linq语法编写“case when”sql语句?将SQL CASE WHEN语句和组语句转换为LINQ
select QueueItem, COUNT(*) as [Count],
SUM(CASE WHEN Queued = 0 THEN 1 ELSE 0 END) AS [Sent],
SUM(CASE WHEN Queued = 1 THEN 1 ELSE 0 END) AS Queued,
SUM(CASE WHEN Success = 1 THEN 1 ELSE 0 END) AS Exported,
SUM(CASE WHEN Success = 0 THEN 1 ELSE 0 END) AS Failed
from ExportQueue x
group by QueueItem
是否有一些程序可以将SQL转换为LINQ? LinqPad也许?
它在LINQ令人惊讶更复杂的做到这一点。在某件事情的中间,但如果你还没有解决方案,我会在大约30分钟后回复并写出来。关键是把你的情况变成匿名结果,然后再把你的情况变成一团糟。 – Gats 2012-01-03 11:16:57
谢谢。如果查询不清楚,查询的目的是按队列项目(销售/信用/购买/等)进行分组,并报告发送了多少,队列中剩余多少,成功和有多少次失败 – 2012-01-03 11:24:23
是的那。我想帮助,因为我喜欢你使用Sum和case的方式。这也是我的一个古老的伎俩,我很惊讶人们不会使用更多,因为它非常快。你需要记住linq显然会做得更慢。我仍然喜欢存储过程对于复杂的聚合,因为左连接的情况可以很容易失控,但这应该没问题。 – Gats 2012-01-03 11:29:53