我只需要在涉及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;
答案 0 :(得分:15)
它似乎有点迂回,但您可以使用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;
答案 1 :(得分:12)
您可以在命名空间EntityFunctions.TruncateTime()
System.Data.Objects
实施例
db.Orders.Where(i => EntityFunctions.TruncateTime(i.OrderFinishDate) == EntityFunctions.TruncateTime(dtBillDate) && i.Status == "B")
像魅力一样。
<强>更新强>
此功能仅在通过LINQ查询实体时有效。不要在LINQ-Object中使用。
对于EF6,请在System.Data.Entity命名空间下使用DbFunctions.TruncateTime()。
答案 2 :(得分:6)
你可以像下面这样做:
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();
答案 3 :(得分:3)
您必须使用System.Data.Entity.DbFunctions.TruncateTime
答案 4 :(得分:2)
试试这个
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也包含时间,则请参考这些链接以修改日期。
Date属性不能在LINQ To Entities中使用。
答案 5 :(得分:0)
这就是我通过做类似日期搜索的结果,我不得不考虑时间(小时和分钟部分)
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;
答案 6 :(得分:-1)
摘下.Date 如果该字段是DateTime,则可以与==
进行比较var duplicate = from a in _db.AgentProductTraining
where a.CourseCode == course.CourseCode &&
a.DateTaken == course.DateTaken &&
a.SymNumber == symNumber
select a;