一尘不染

Linq到实体日期时间错误

sql

我有以下代码

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)’方法,并且该方法无法转换为商店表达式。

我究竟做错了什么?以及我该如何解决?


阅读 127

收藏
2021-03-17

共1个答案

一尘不染

好吧,错误实际上很明显。在Linq中没有将ParseExact的实体转换为SQL。

请记住,实体框架在幕后将查询转换为SQL命令或命令集。如果EF不知道如何翻译某些内容,则会引发此错误。

一种可能的解决方案(虽然效率不高)是将IQueryable转换为IEnumerable,这将使您可以执行该语句。

var dates = query.ToList().Select(
             x => DateTime.ParseExact(x.Date, "yyyy-MM", CultureInfo.InvariantCulture));
2021-03-17