如何执行 LINQ to Entities 查询,从现有结果集变量中提取值而不是针对数据库

How to execute a LINQ to Entities query, pulling values from an existing resultset variable instead of against the DB

为了提供一些上下文,我使用 jqGrid 在日期时间字段上执行服务器端搜索,t运行在服务器端设置时间部分,然后通过存储过程获取结果。这是使用 System.Dynamic.Linq 完成的,我根据这个问题 here 稍微修改了一下。我正在使用 EF6 Code First 方法。代码的相关部分如下所示:

//For matching date instead of datetime values
if (wc.Clause.Contains("Date"))
{
    wc.Clause = wc.Clause.Replace("DeliveryDate", "DbFunctions.TruncateTime(DeliveryDate)");
}
results = dataFileDB.Database.SqlQuery<Document>("exec [dbo].[sp_getDocumentDetails]").AsQueryable().Where(wc.Clause, wc.FormatObjects);

我遇到的问题是因为查询是使用存储过程获取的,所以我在最后一行出现异常

System.NotSupportedException: This function can only be invoked from LINQ to Entities. at System.Data.Entity.DbFunctions.TruncateTime(Nullable`1 dateValue)

在我使用 lambda 查询直接从实体本身获取并应用 where 子句过滤器的其他地方,过滤是正确完成的。

我试图做的(我不确定这是否可能但是...)是 运行 针对 results 变量的实体查询并将 where 子句应用于那个变量,但我没有运气。这是正确的方法还是我可以采取另一种方法?

提前致谢!

明白了...我把事情搞得太复杂了。

我只是在通过存储过程返回时将 DateTime 字段转换为 Date 字段。这样做不再需要我使用 DbFunctions.TruncateTime 方法,从而解决了我的问题。

希望这对其他人有帮助!