Nea*_*alR 10 linq datetime entity-framework entity-framework-4
我只需要在涉及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;
Run Code Online (Sandbox Code Playgroud)
Iro*_*n84 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;
Run Code Online (Sandbox Code Playgroud)
صفي*_*صفي 12
您可以EntityFunctions.TruncateTime()在命名空间下使用System.Data.Objects
防爆.
db.Orders.Where(i => EntityFunctions.TruncateTime(i.OrderFinishDate) == EntityFunctions.TruncateTime(dtBillDate) && i.Status == "B")
Run Code Online (Sandbox Code Playgroud)
像魅力一样工作.
UPDATE
只有通过LINQ查询实体时,此功能才有效.不要在LINQ-Object中使用.
对于EF6,在System.Data.Entity命名空间下使用DbFunctions.TruncateTime().
小智 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();
Run Code Online (Sandbox Code Playgroud)