我有以下代码
var dates = query.Select( x => DateTime.ParseExact(x.Date, "yyyy-MM", CultureInfo.InvariantCulture)); var minDate = dates.Min(x => x);
但是当我执行该命令时,我得到了例外
System.Data.Entity.dll,但未在用户代码中处理 附加信息:LINQ to Entities无法识别方法’System.DateTime ParseExact(System.String,System.String,System.IFormatProvider)’方法,并且该方法无法转换为商店表达式。
System.Data.Entity.dll,但未在用户代码中处理
附加信息:LINQ to Entities无法识别方法’System.DateTime ParseExact(System.String,System.String,System.IFormatProvider)’方法,并且该方法无法转换为商店表达式。
我究竟做错了什么?以及我该如何解决?
好吧,错误实际上很明显。在Linq中没有将ParseExact的实体转换为SQL。
请记住,实体框架在幕后将查询转换为SQL命令或命令集。如果EF不知道如何翻译某些内容,则会引发此错误。
一种可能的解决方案(虽然效率不高)是将IQueryable转换为IEnumerable,这将使您可以执行该语句。
var dates = query.ToList().Select( x => DateTime.ParseExact(x.Date, "yyyy-MM", CultureInfo.InvariantCulture));