我有一个朋友正在使用C# Linq报告以下表格:
varchar(50) name
datetime when
客户希望能够选择要汇总的列,例如今年的总数、去年的总数、两周前的总数等等。每个列都有一些开始和结束时间,它们会用计数进行汇总。我为他快速编写了一个查询语句:
select A.name as [Name],
(select count(*) from mytable B where A.name = B.name and
datepart(yy, when) = datepart(yy,getdate())) as [This Year],
(select count(*) from mytable B where A.name = B.name and
datepart(yy, when) = (datepart(yy,getdate()) - 1)) as [Last Year]
from (select distinct name from mytable) A
我还建议他将每个计算字段都设置为代理,这样他就可以在查询之外包含计算混乱的内容。假设每个委托都有一个开始和结束日期,计算每个不同名称发生了多少次命中,有人想尝试一下Linq c#代码会是什么样子吗?