LINQ to Entities无法识别MVC5中的方法'System.DateTime ParseExact(System.String,System.String,System.IFormatProvider)'方法错误

时间:2016-08-26 07:30:29

标签: c# entity-framework linq datetime asp.net-mvc-5

您好我有一个名为 DailyVisitReport 的视图。在该视图中,我有两个名为 FromDate toDate 的字段。如果我选择FromDate和ToDate取决于它在相同视图中显示数据的日期(如局部视图)。

现在FromDate和ToDate日期jquery中的格式是“dd-M-y”(01-Mar-16)

在Db中我也将日期格式更改为(01-Mar-16 STRING)。

我的模型(VisitorsViewModel)

public ActionResult GetDatesfromFromDateToDate(string fromDate, string toDate)
{
    CultureInfo provider = CultureInfo.InvariantCulture; 
    var fromdt = Convert.ToDateTime(fromDate);
    var  todt = Convert.ToDateTime(toDate);
    List<View_VisitorsForm> VisitCount = (from v in db.View_VisitorsForm where DateTime.ParseExact(v.VisitingDate,"dd-M-y", provider) >= fromdt && DateTime.ParseExact(v.VisitingDate,"dd-M-y",provider) <= todt select v).ToList();
    VisitorsViewModel visitotsVM = new VisitorsViewModel();
    visitotsVM.Visits = VisitCount;
    return PartialView("_Visitors", visitotsVM);
}

我的控制器代码

FromDate

现在我选择了ToDatev.VisitingDate它显示了下面提到的错误

  

LINQ to Entities无法识别方法'System.DateTime ParseExact(System.String,System.String,System.IFormatProvider)'   方法

我无法从字符串格式将DateFormat转换为Convert.ToDateTime

我尝试了Convert.ToParsepublic RealmResults<MyObject> getMyObjects(List<Integer> ids) { Realm realm = null; try { realm = Realm.getDefaultInstance(); RealmQuery<MyObject> query = realm.where(MyObject.class); for (int i=0; i< ids.size(); i++) { query = query.equalTo("id", ids.get(i)); if (i != ids.size() -1) { query = query.or(); } } return query.findAll(); } finally { if (realm != null) realm.close(); } } 所有事情。我还是得错了。请任何人了解我的问题,并帮助我解决这个问题。

2 个答案:

答案 0 :(得分:2)

Linq to Entities查询中的所有操作都将转换为sql。 DateTime.Parse无法转换为sql,从而导致错误。

where之外执行解析以专门解决该问题,但更一般地说,您也应该使VisitingDate成为DateTime属性。

答案 1 :(得分:1)

属性VisitingDate应为DateTime类型,以避免这些挣扎。不要使用字符串mishmash比较日期时间值,请使用DateTime类型。

那里的条件看起来像

where v.VisitingDate.HasValue ?
    v.VisitingDate.Value >= fromdt && v.VisitingDate.Value <= todt
  : 
    ... // put a condition here when visiting date has no value in DB

还有一个LINQ to SQL中支持/不支持的方法列表,我假设LINQ to Entities也是如此:https://msdn.microsoft.com/en-us/library/bb386970.aspx

因此你不能使用Parse ....