此代码产生错误:
void GetLog()
{
List<CAR_STATUS_LOGS> logs = null;
using (TESTEntities ctx = new TESTEntities())
{
logs =
ctx.CAR_STATUS_LOGS
.Where(a => SqlFunctions.DatePart("DAY", a.TIMEMARK) == 1)
.ToList();
}
}
错误是这样的:
LINQ to Entities无法识别方法'System.Nullable`1 [System.Int32] DatePart(System.String,System.Nullable`1 [System.DateTime])'方法,而且此方法无法转换为商店表达。
我看不出我对SqlFunctions.DatePart
做错了什么。 TIMEMARK列是Sqlserver DateTime类型
有什么想法吗?
答案 0 :(得分:14)
您可以使用程序集EntityFramework.SqlServer.dll(Entity Framework 6.1.3)中的System.Data.Entity.SqlServer.SqlFunctions,例如:
myTable.Where (w =>
(System.Data.Entity.SqlServer.SqlFunctions.DatePart("weekday", w.Data).Value == 1);
答案 1 :(得分:0)
DbFunctions.DiffDays(Date1,Date2)==1
答案 2 :(得分:-1)
写日而不是DAY
SqlFunctions.DatePart("day", a.TIMEMARK) == 1).ToList();
因为一天代表
dd,d
了解更多详情: -
答案 3 :(得分:-2)
如果a.TIMEMARK是一个datime,你可以通过a.TIMEMARK.Day
访问这一天。