您好我有一个名为 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
现在我选择了ToDate
和v.VisitingDate
它显示了下面提到的错误
LINQ to Entities无法识别方法'System.DateTime ParseExact(System.String,System.String,System.IFormatProvider)' 方法
我无法从字符串格式将DateFormat
转换为Convert.ToDateTime
。
我尝试了Convert.ToParse
和public 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();
}
}
所有事情。我还是得错了。请任何人了解我的问题,并帮助我解决这个问题。
答案 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 ....