链接到实体SqlFunctions.DatePart

本文关键字:DatePart SqlFunctions 实体 链接 | 更新日期: 2023-09-27 18:13:13

这段代码产生了一个错误:

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到实体无法识别方法'System. nullable ' 1[System. null]Int32] DatePart(系统。字符串,System.Nullable ' 1[System.DateTime])'方法,此方法不能转换为存储表达式。

我看不出我在SqlFunctions.DatePart上做错了什么。列TIMEMARK是Sqlserver DateTime类型。
什么好主意吗?

链接到实体SqlFunctions.DatePart

您可以从程序集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);
DbFunctions.DiffDays(Date1,Date2)==1

如果a. timemark是日期,则可以使用a. timemark . day

访问日期。

写day而不是day

SqlFunctions.DatePart("day", a.TIMEMARK) == 1).ToList();

因为day代表

dd, d

查看更多详细信息:-

http://www.w3schools.com/sql/func_datepart.asp