C# LINQPad正在抛出异常“;TruncateTime(System.Nullable`1[System.DateTime])';没有支持的到SQL的转换;将转储应用于结果时

C# LINQPad正在抛出异常“;TruncateTime(System.Nullable`1[System.DateTime])';没有支持的到SQL的转换;将转储应用于结果时,c#,linq,linqpad,C#,Linq,Linqpad,我在LINQPad中完成了一个Linq查询。此查询有一些FROM、JOIN和where子句(既不使用group by也不使用order by) 在where子句中,我使用以下函数从DateTime字段中删除时间: System.Data.Entity.DbFunctions.TruncateTime(myField) 此查询将结果返回到: IQueryable<MyCustomClass> IQueryable 当我从LINQPad执行查询时,它是正确执行的,没有错误,但是如果

我在LINQPad中完成了一个Linq查询。此查询有一些FROM、JOIN和where子句(既不使用group by也不使用order by)

在where子句中,我使用以下函数从DateTime字段中删除时间:

System.Data.Entity.DbFunctions.TruncateTime(myField)
此查询将结果返回到:

IQueryable<MyCustomClass>
IQueryable
当我从LINQPad执行查询时,它是正确执行的,没有错误,但是如果我执行results.Dump()或results.ToList().Dump()以便在LINQPad中查看结果,我会得到以下错误:

TruncateTime(System.Nullable`1[System.DateTime])不受支持 转换为SQL。”


这不是LinqPad特有的

这基本上意味着
Where
子句包含一些无法从Linq成功转换为SQL的条件

为了解决这个问题,您可以拆分where子句:

where子句的第一部分包含所有与SQL兼容的操作,然后添加一个将从数据库检索数据的
.ToList()
,然后使用where子句的非SQL但与Linq对象兼容的部分结束

我意识到这会对数据库产生更大的影响,但这就是限制

AsEnumerable()
将完成相同的任务,但将保持延迟执行(这在这里可能没有什么区别,但作为一个选项值得一提)