Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 将Linq.Contains方法添加到表达式Func<;对象,Bool>;_Entity Framework_Linq_Lambda_Expression_Ef Core 2.2 - Fatal编程技术网

Entity framework 将Linq.Contains方法添加到表达式Func<;对象,Bool>;

Entity framework 将Linq.Contains方法添加到表达式Func<;对象,Bool>;,entity-framework,linq,lambda,expression,ef-core-2.2,Entity Framework,Linq,Lambda,Expression,Ef Core 2.2,我对截图中的黄色部分有问题。如果SelectedGroup不为空,则我需要。除了添加到该表达式中的术语外,还要添加另一个条件。就这样 c => SelectedGroup.Contains (c.CourseGroup.Id) 选择ID在该范围内的所有SelectedGroup。我写的这个查询不起作用。给出的错误是无法将其转换为SQL查询。我不知道如何解决这个问题。请帮帮我 有关我的代码的更多详细信息,请参见我的代码存储库: 使用联合收割机功能,它帮不了你。如果您真的想要返回一个可

我对截图中的黄色部分有问题。如果SelectedGroup不为空,则我需要。除了添加到该表达式中的术语外,还要添加另一个条件。就这样

c => SelectedGroup.Contains (c.CourseGroup.Id) 
选择ID在该范围内的所有SelectedGroup。我写的这个查询不起作用。给出的错误是无法将其转换为SQL查询。我不知道如何解决这个问题。请帮帮我

有关我的代码的更多详细信息,请参见我的代码存储库:


使用
联合收割机
功能,它帮不了你。如果您真的想要返回一个可查询项,那么就不应该编译表达式

你能做的是:

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;
Expression Expression=c=>(string.IsNullOrEmpty(Title)| | EF.Functions.Like(c.CourseTitle,$“%{Title}%”)
&&c.IsDeleted==IsDeleted);
开关(状态类型)
{
案例价格状态类型。全部:
打破
案例价格状态类型。免费:
queryable=queryable.Where(表达式).Where(c=>c.CoursePrice<1000);
打破
案例价格状态类型。现金:
queryable=queryable.Where(表达式).Where(c=>c.CoursePrice=MinPrice);
打破
}
if(SelectedGroup!=null&&SelectedGroup.Any())
{
表达式e=c=>SelectedGroup.Contains(c.CourseGroup.Id);
queryable=queryable.Where(表达式);
queryable=queryable.Where(c=>SelectedGroup.Contains(c.CourseGroup.Id));
}
返回可查询;
另外,我删除了Include,因为它没有用,如果需要,应该由调用方使用