c#/ LINQ - 平均一段时间内每天,每周和每月的查询数

时间:2012-05-09 12:21:56

标签: c# linq

我有以下LINQ查询:

model.TotalEnquiries = enquiriesDbContext.Enquiries.Where(x => x.CustomerAccountNumber == formModel.CustomerAccNo)
                   .Where(x => x.EnquiryDate >= startDate).Where(x => x.EnquiryDate <= endDate).Count();

这样可以正常工作,因为它会在2个指定的时间段内返回60的值,但我想要做的是查找此期间每天,每周和每月的平均查询次数,它可能在LINQ?

2 个答案:

答案 0 :(得分:7)

考虑到你自己指定了这段时间,很容易:

var averagePerDay = total / (endDate - startDate).TotalDays;
编辑:我看到你正在改变球门柱...如果你想在一个查询中获得不同日期范围的平均值,那么这将是棘手的。就个人而言,除非有大量数据,否则我可能会在适当的范围内获取所有查询日期,然后在本地处理它,这可能比尝试最小化SQL查询的数量同时仍然保持智能更容易

在任意时期按月平均在概念上是棘手的:在(例如)2月16日到4月7日期间有多少个月?涉及三个不同的月份长度。

当然,您可能的意思是“按天平均,按月分组”(例如,1月份的平均值,2月份的平均值“等),这完全不同。这就是您需要准确了解要求的原因。

答案 1 :(得分:0)

您需要使用GROUP BY按日对条目进行分组,记录here(带样本)

否则,您需要通过SUM / COUNT来平均做出平均值,这样您就无法深入了解分布,趋势等。