其中,results1是一个工作良好的IQuerable<myObject>,直到您尝试按日期进行筛选:
results1 = results1.Where(l => DbFunctions.DiffDays(FromDate, l.LeadDate) >= 0);然后我得到了一个错误:
此函数只能从LINQ实体中调用。
我在这里看到了一些其他线程,这些线程让我接近了一个答案,like this one,但是它的不同之处在于,我不知道如何重新构造这个过滤器,这样它就不会在内存中尝试这样做了(这就是为什么我认为这个错误正在发生?)
编辑:
查询太复杂,无法在Linq中工作。我以为这会是一样的,但也许不是?
var query1 = @"
SELECT
// columns that match the object 'myObject'
FROM
// a whole bunch of joins and left joins
ORDER BY
....";
var results1 = Context.DbContext.Database.SqlQuery<myObject>(query1).AsQueryable();发布于 2017-03-21 17:58:36
你能用DateTime.Subtract和TimeSpan.Days吗?
results1 = results1.Where(l => FromDate.Subtract(l.LeadDate).Days >= 0).ToList();发布于 2017-03-21 17:55:32
因为您正在运行一个原始的SQL查询(即使用SqlQuery ),所以结果是一组物化的数据。这意味着查询已经传递给您的数据存储区,并且数据以DbRawSqlQuery<>的形式传回。这与通常扩展EF查询时可以构建的可查询接口不同。
可以添加到原始SQL查询中,也可以使用.Net框架中的方法,也可以编写自己的方法。
https://stackoverflow.com/questions/42934531
复制相似问题