以前要不是使用扩展方法
要么使用如(t==2&&判断条件)||(s==1&&判断条件) 其实可以简单的实现扩展一个whereIf即可(abp实现),如下所示 ··· /// /// Filters a by given predicate if given condition is true. /// /// Queryable to apply filtering /// A boolean value /// Predicate to filter the query /// Filtered or not filtered query based on public static IQueryable WhereIf(this IQueryable query, bool condition, Expression<Func<T, bool>> predicate) { return condition ? query.Where(predicate) : query; }////// Filters a /// Queryable to apply filtering /// A boolean value /// Predicate to filter the query ///by given predicate if given condition is true. /// Filtered or not filtered query based on public static IQueryableWhereIf (this IQueryable query, bool condition, Expression > predicate) { return condition ? query.Where(predicate) : query; }
···
使用
例如:
var query = _taskRepository.GetAll().Include(t => t.AssignedPerson) .WhereIf(input.State.HasValue, t => t.State == input.State.Value) .WhereIf(!input.Filter.IsNullOrEmpty(), t => t.Title.Contains(input.Filter)) .WhereIf(input.AssignedPersonId.HasValue, t => t.AssignedPersonId == input.AssignedPersonId.Value);