如何使用LINQ执行此操作?

时间:2010-05-10 14:20:50

标签: sql linq linq-to-sql

我所做的就是:

SELECT CallTypeID, Count(CallTypeID) as NumberOfCalls
FROM [Helpdesk_HR].[dbo].[CallHeader]
WHERE CallHeader.DateOpened <= GETDATE()-7
GROUP BY CallTypeID
在LINQ中

。但我无法找到一种方法来实现它并让它发挥作用。我会使用Linqer,但我公司目前不会支付费用。

我非常感谢任何帮助,因为我确信答案是显而易见的。这只是今天的其中一天。

2 个答案:

答案 0 :(得分:2)

这样的事情:

var callGroups = from ch in CallHeader
        where ch.YourDate <= DateTime.Now.AddDays(-7)
        group ch by ch.CallTypeID into grp
        select new { CallTypeID = grp.Key, Cnt = grp.Count() };

我没有测试过,所以语法可能会关闭。

答案 1 :(得分:0)

试试这个:

var query = from call in context.CallHeader
            where call.DateOpened <= DateTime.Today.AddDays(-7)
            group call by call.CallTypeId into grouped
            select new { CallTypeId = grouped.Key, Count = grouped.Count() };

DateTime.Today位可能略有偏差 - 这取决于您的日期如何存储在数据库中。您可能希望在查询之前计算出日期,然后只使用“where call.DateOpened <= limit”或类似的东西。