Stored procedures 如何执行LINQ to Entities查询,从现有resultset变量中提取值,而不是针对DB

Stored procedures 如何执行LINQ to Entities查询,从现有resultset变量中提取值,而不是针对DB,stored-procedures,orm,jqgrid,entity-framework-6,dynamic-linq,Stored Procedures,Orm,Jqgrid,Entity Framework 6,Dynamic Linq,为了提供一些上下文,我使用jqGrid在datetime字段上执行服务器端搜索,截断服务器端的时间部分,然后通过存储过程获取结果。这是使用System.Dynamic.Linq完成的,我根据这个问题稍微修改了它。我使用的是EF6代码优先的方法。代码的相关部分如下所示: //For matching date instead of datetime values if (wc.Clause.Contains("Date")) { wc.Clause = wc.Clause.Replace(

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

//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:此函数只能从LINQ调用到实体。 位于System.Data.Entity.DbFunctions.TruncateTimeNullable`1 dateValue

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

我想做什么,我不确定这是否可能,但。。。对results变量运行实体查询,并对该变量应用where子句,但我运气不好。这是正确的方法还是我可以采取其他方法


提前谢谢

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

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

希望这对其他人有帮助