SQL到LINQ -滚动月份的日期
本文关键字:日期 滚动 LINQ SQL | 更新日期: 2023-09-27 18:02:41
希望将此转换为LINQ。
select COUNT(*) as 'BillsOver30' from pssuite_web.pujhaccd
where billdays>30 and DATEDIFF(month,'07-07-2016', GETDATE()) <= 13
Group By Month(billdate)
这将显示从07-07的13个滚动月,每个月有多少账单超过30。
这是我在LINQ中写的可怕的查询,它不起作用:
DateTime earliestDate = objdate1.DateStart.Value.AddMonths(-13);
var custQuery9 = ((from m in DataContext.pujhaccds
where m.billdays > 30
&& m.billdate >= earliestDate
&& m.billdate <= objdate1.DateStart
group m by m.billdays into p
select p)).Count();
得到你在注释中描述的结果:
var result = (from m in DataContext.pujhaccds
where m.billdays > 30 &&
m.billdate >= earliestDate &&
m.billdate <= objdate1.DateStart
group m by m.billdate.Month into p
select new { Month = p.Key, Count = p.Count() }).ToList();
将上面的select
替换为如下所示:
select p.Count()
如果你有不同年份的数据并想要分开,那么分组将是有问题的。如果是这种情况,按2个字段分组-年和月:
var result = (from m in DataContext.pujhaccds
where m.billdays > 30 &&
m.billdate >= earliestDate &&
m.billdate <= objdate1.DateStart
group m by new { m.billdate.Value.Month, m.billdate.Value.Year } into p
select new { Date = $"{p.Key.Month} - {p.Key.Year}", Count = p.Count() }).ToList();