我在数据库中有一个日期列表。我想找出最好的方法来找到第一天在下一个日期前至少7天。
是否有可以执行此类操作的聚合函数?
return context.SBHolidays.Where((h1, h2) =>DbFunctions.DiffDays(h1, h2) > 6)
答案 0 :(得分:0)
另一个答案是因为我们放在EF上的包装器而没有工作但是这是另一个应该工作的解决方案
var firstHolidayWithGap = context.SBHolidays.OrderBy(h => h.HolidayDate)
.Select((h, i) => new {h, i}).Distinct()
.Join(context.SBHolidays.OrderBy(h => h.HolidayDate)
.Select((h, i) => new {h, i}).Distinct(),
h1 => h1.i,
h2 => h2.i + 1,
(h1, h2) => new {h1 = h1.h.HolidayDate, h2 = h2.h.HolidayDate})
.Where(h => DbFunctions.DiffDays(h.h1, h.h2) > 7)
.Select(h => h.h1).FirstOrDefault();