首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Linq.Contains方法添加到Expression Func<Object,Bool>

将Linq.Contains方法添加到Expression Func<Object,Bool>
EN

Stack Overflow用户
提问于 2019-05-04 01:10:21
回答 1查看 67关注 0票数 2

我对截图中的黄色部分有意见。我想知道SelectedGroup是否为空。除了添加到该表达式的术语之外,还需要添加另一个条件。就这样。

代码语言:javascript
运行
复制
c => SelectedGroup.Contains (c.CourseGroup.Id) 

选择ID在该范围内的所有SelectedGroups。我写的这个查询不起作用。给出的错误是它不能被转换成SQL查询。我没有办法解决这个问题。请帮帮我

enter image description here

有关我的代码的更多详细信息-这是我的代码库:

enter link description here

enter link description here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-04 01:19:52

坐上combine的车,它帮不了你。如果你真的想返回一个queryable,你就不应该编译你的表达式。

你可以做的是:

代码语言:javascript
运行
复制
Expression<Func<Course, bool>> expression = c => (string.IsNullOrEmpty(Title) || EF.Functions.Like(c.CourseTitle, $"%{Title}%")
        && c.IsDeleted == IsDeleted);

        switch (statusType)
        {
            case PriceStatusType.All:
                break;
            case PriceStatusType.Free:
                queryable = queryable.Where(expression).Where(c => c.CoursePrice < 1000);
                break;
            case PriceStatusType.Cash:
                queryable = queryable.Where(expression).Where(c => c.CoursePrice <= MaxPrice && c.CoursePrice >= MinPrice);
                break;
        }
        if (SelectedGroup != null && SelectedGroup.Any())
        {
            Expression<Func<Course, bool>> e = c => SelectedGroup.Contains(c.CourseGroup.Id);
            queryable = queryable.Where(expression);
            queryable = queryable.Where(c => SelectedGroup.Contains(c.CourseGroup.Id));


        }

        return queryable;

另外,我删除了Include,因为它没有用,如果需要,调用者应该使用它。

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

https://stackoverflow.com/questions/55974375

复制
相关文章

相似问题

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