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

Cal*_*ass 1 c# linq

我有以下LINQ查询:

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

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

Jon*_*eet 7

鉴于您已经自己指定了这段时间,这很简单:

var averagePerDay = total / (endDate - startDate).TotalDays;
Run Code Online (Sandbox Code Playgroud)

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

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

当然,你可能的意思是"平均按天计算,按月分组"(例如1月份的平均值,2月份的平均值"等),这完全不同.这就是为什么你需要准确的要求.