LINQ to Entities无法识别方法ToDateTime(System.String)

时间:2016-03-29 09:31:07

标签: c# entity-framework linq datetime

我必须使用"转换为日期时间"比较日期时间与参考月份和年份的方法,如下所示

var res =  db.Table1
//other tables, and where conditions
.Select(x => new MyObj
{
      //...
      Imp = x.MyTable.FirstOrDefault(y => y.date_val >= System.Data.Entity.DbFunctions.AddMonths(Convert.ToDateTime("01/" + x.month + "/" + x.year), 1))).Description
})

我知道Convert.ToDateTime无法从提供程序转换为sql,我需要一个想法来进行查询。

更新:我不会在转换之前实现查询,因为这显然意味着需要所有记录。

2 个答案:

答案 0 :(得分:5)

我想我找到了做到这一点的方法

var res =  db.Table1
//other tables, and where conditions
.Select(x => new MyObj
{
      //...
      Imp = x.MyTable.FirstOrDefault(y => y.date_val >= System.Data.Entity.DbFunctions.AddMonths(System.Data.Entity.DbFunctions.CreateDateTime(x.year, x.month, 1, 0, 0, 0), 1)).Description
})

答案 1 :(得分:1)

这有点粗糙,但您可以在解析日期之前实现要列出的SQL查询:

var res = db.Table1.ToList()
//other tables, and where conditions
.Select(x => new MyObj
{
//...
    Imp = x.MyTable.FirstOrDefault(y => y.date_val >= System.Data.Entity.DbFunctions.AddMonths(DateTime.Parse("01/" + x.month + "/" + x.year))).Description
})