首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbFunctions.DiffDays()的结果是:该函数只能从LINQ实体调用

DbFunctions.DiffDays()的结果是:该函数只能从LINQ实体调用
EN

Stack Overflow用户
提问于 2017-03-21 17:45:17
回答 2查看 4.1K关注 0票数 4

其中,results1是一个工作良好的IQuerable<myObject>,直到您尝试按日期进行筛选:

代码语言:javascript
复制
results1 = results1.Where(l => DbFunctions.DiffDays(FromDate, l.LeadDate) >= 0);

然后我得到了一个错误:

此函数只能从LINQ实体中调用。

我在这里看到了一些其他线程,这些线程让我接近了一个答案,like this one,但是它的不同之处在于,我不知道如何重新构造这个过滤器,这样它就不会在内存中尝试这样做了(这就是为什么我认为这个错误正在发生?)

编辑:

查询太复杂,无法在Linq中工作。我以为这会是一样的,但也许不是?

代码语言:javascript
复制
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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-21 17:58:36

你能用DateTime.SubtractTimeSpan.Days吗?

代码语言:javascript
复制
results1 = results1.Where(l => FromDate.Subtract(l.LeadDate).Days >= 0).ToList();
票数 2
EN

Stack Overflow用户

发布于 2017-03-21 17:55:32

因为您正在运行一个原始的SQL查询(即使用SqlQuery ),所以结果是一组物化的数据。这意味着查询已经传递给您的数据存储区,并且数据以DbRawSqlQuery<>的形式传回。这与通常扩展EF查询时可以构建的可查询接口不同。

可以添加到原始SQL查询中,也可以使用.Net框架中的方法,也可以编写自己的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42934531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档