我只需要在涉及datetime
字段的Linq查询中比较日期。但是,以下语法导致以下错误消息
The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
有人知道如何从datetime
字段中提取日期吗?
var duplicate = from a in _db.AgentProductTraining
where a.CourseCode == course.CourseCode &&
a.DateTaken.Date == course.DateTaken.Date &&
a.SymNumber == symNumber
select a;
这可能看起来有点迂回,但您可以使用SqlFunctions类的DateDiff方法来实现这一点。只需输入这两个值,并使用"Day"来查找它们之间的天数差异(如果它们在同一天,则应为0)。
如下所示:
from a in _db.AgentProductTraining
where a.CourseCode == course.CourseCode &&
SqlFunctions.DateDiff("DAY", a.DateTaken, course.DateTaken) == 0 &&
a.SymNumber == symNumber
select a;
您可以在名称空间System.Data.Objects
下使用EntityFunctions.TruncateTime()
Ex。
db.Orders.Where(i => EntityFunctions.TruncateTime(i.OrderFinishDate) == EntityFunctions.TruncateTime(dtBillDate) && i.Status == "B")
工作起来很有魅力。
更新
只有当您通过LINQ查询实体时,此函数才起作用。不要在LINQ对象中使用。
对于EF6,请在System.Data.Entity命名空间下使用DbFunctions.TruncateTime()。
您可以按照以下方式进行操作:
var data1 = context.t_quoted_value.Where(x => x.region_name == "Pakistan"
&& x.price_date.Value.Year == dt.Year
&& x.price_date.Value.Month == dt.Month
&& x.price_date.Value.Day == dt.Day).ToList();
您必须使用System.Data.Entity.DbFunctions.TruncateTime
尝试这个
DateTime dt =course.DateTaken.Date;
var duplicate = from a in _db.AgentProductTraining
where a.CourseCode == course.CourseCode &&
a.DateTaken == dt &&
a.SymNumber == symNumber
select a;
如果a.DateTaken也包含时间,请参考这些链接修改您的日期
不能在LINQ To实体中使用Date属性。
使用LINQ与实体(实体框架)比较日期
';日期';在LINQ to Entities中不支持。只支持初始化程序、实体成员和实体导航属性
http://forums.asp.net/t/1793337.aspx/1
这就是我进行类似日期搜索的方式,我必须考虑时间(小时和分钟部分)以及
from x in _db.AgentProductTraining
where
x.CreatedOn.Year == mydacourse.DateTakente.Year
&& x.CreatedOn.Month == course.DateTaken.Month
&& x.CreatedOn.Day == course.DateTaken.Day
&& x.CreatedOn.Hour == course.DateTaken.Hour
&& x.CreatedOn.Minute == course.DateTaken.Minute
select x;
嘿,当我构建一个查询时,下面的有效
DateTime date = Convert.ToDateTime(SearchText);
query = query.Where(x => x.Date.Month == date.Month
&& x.Date.Day == date.Day
&& x.Date.Year == date.Year);
//让我知道这是否对你有效,因为它提取了为我搜索的日期
有点难看,但它在不使用任何sql函数的情况下仍能正常工作:
var sessions = await Db.Set<Sessions>()
.Where(x => x.Timetable == form.TimetableId)
.Where(x => x.DateAndTimeOfSession >= form.BookingDate.Date) // <--
.Where(x => x.DateAndTimeOfSession < form.BookingDate.Date.AddDays(1)) // <--
.ToListAsync();
起飞日期如果字段是DateTime,则可以将其与==进行比较
var duplicate = from a in _db.AgentProductTraining
where a.CourseCode == course.CourseCode &&
a.DateTaken == course.DateTaken &&
a.SymNumber == symNumber
select a;