向此 ef 核心查询添加连续计数
Add consecutive count to this ef core query
我在 Entity Framework Core 中有以下查询,报告给定日期之间按客户分组的销售额。
IEnumerable<SalesDataModel> currentSales =
(from s in sales
where s.Date >= [StartDate] && u.Date <= [EndDate]
join c in customers on s.Acct equals c.Account
group s by new { s.Name, c.City } into g
select new SalesDataModel {
CustName = g.Key.Name,
City = g.Key.City,
MaxBorrowed = g.Max(x => x.Price),
Average = g.Average(x => x.Price),
NumDays =
g.Sum(x => x.Price > 0 ? 1 : 0),
ConsecutiveDays = //???
}).ToList();
基本上我想计算给定客户在日期范围内连续两天或更长时间进行购买的次数。因此,从第 1 天开始,然后将其与第 2 天进行比较;如果这两天的 Price > 0,则以 1 为单位迭代计数器。然后用相同的标准检查第 2 天和第 3 天,并重复我为该客户所拥有的尽可能多的记录。如果遇到零或空价格值,计数器不应重置为零,但它应该为下一个客户重置。
我发现 this SO Post 问了类似的问题,但必须有更简单的方法。我正在使用 EF Core 5。
此外,完全披露,这个 post 是 的延续。由于这个问题的答案可能不像我希望的那么简单,第二个 post 似乎是更好的方法。
此查询需要执行 SP 的 FromSqlRaw 才能使其工作。
我在 Entity Framework Core 中有以下查询,报告给定日期之间按客户分组的销售额。
IEnumerable<SalesDataModel> currentSales =
(from s in sales
where s.Date >= [StartDate] && u.Date <= [EndDate]
join c in customers on s.Acct equals c.Account
group s by new { s.Name, c.City } into g
select new SalesDataModel {
CustName = g.Key.Name,
City = g.Key.City,
MaxBorrowed = g.Max(x => x.Price),
Average = g.Average(x => x.Price),
NumDays =
g.Sum(x => x.Price > 0 ? 1 : 0),
ConsecutiveDays = //???
}).ToList();
基本上我想计算给定客户在日期范围内连续两天或更长时间进行购买的次数。因此,从第 1 天开始,然后将其与第 2 天进行比较;如果这两天的 Price > 0,则以 1 为单位迭代计数器。然后用相同的标准检查第 2 天和第 3 天,并重复我为该客户所拥有的尽可能多的记录。如果遇到零或空价格值,计数器不应重置为零,但它应该为下一个客户重置。
我发现 this SO Post 问了类似的问题,但必须有更简单的方法。我正在使用 EF Core 5。
此外,完全披露,这个 post 是
此查询需要执行 SP 的 FromSqlRaw 才能使其工作。