【发布时间】:2015-01-07 08:31:53
【问题描述】:
请问如何在Entity Framework中写一个复杂的DateTime查询如下:
我正在使用此代码:
Func<DateTime, DateTime> calculate24HoursLater = (date) =>
{
if (date.DayOfWeek == DayOfWeek.Friday)
return date.AddDays(3);
if (date.DayOfWeek == DayOfWeek.Saturday)
return date.AddDays(3).Date;
if (date.DayOfWeek == DayOfWeek.Sunday)
return date.AddDays(2).Date;
return date.AddDays(1);
};
var unactionedEnquiries =
dataContext.ContactedBrokerEnquiries
.Include("ContactedBrokers")
.Where(
x => x.ContactedBrokers.All(c => c.Status == (byte)LeadStatus.Rejected) ||
x.ContactedBrokers.Any(c => c.Status == (byte)LeadStatus.New && calculate24HoursLater(c.CreatedDate) < DateTime.Now)
).OrderByDescending(c => c.CreatedDate);
结果unactionedEnquiries,我希望它应该是IQueryable。这意味着 SQL Server 在我的下一条语句之前不会执行
但是,我在calculate24HoursLater(c.CreatedDate) < DateTime.Now) 上遇到异常情况@
该语句不能转换为 SQL 语句。我知道原因,但我不知道如何在Entity Framework 查询中写出rule
重要提示:我不喜欢将所有数据推入 RAM,然后使用该条件进行过滤。理想情况下,它应该在SQL-Server
能否请您告诉我如何在 SQL-EF 语句中编写它们?
【问题讨论】:
标签: sql sql-server entity-framework datetime