Entity framework 将Linq.Contains方法添加到表达式Func<;对象,Bool>;
我对截图中的黄色部分有问题。如果SelectedGroup不为空,则我需要。除了添加到该表达式中的术语外,还要添加另一个条件。就这样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查询。我不知道如何解决这个问题。请帮帮我 有关我的代码的更多详细信息,请参见我的代码存储库: 使用联合收割机功能,它帮不了你。如果您真的想要返回一个可
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,因为它没有用,如果需要,应该由调用方使用