官方的Linq中并没有WhereIf方法,为了方便我们的日常开发,使用扩展方法实现WhereIf。
public static class QueryableExtensions { public static IQueryable<T> WhereIf<T>(this IQueryable<T> query, bool condition, Expression<Func<T, bool>> predicate) { return condition ? query.Where(predicate) : query; } public static IQueryable<T> WhereIf<T>(this IQueryable<T> query, bool condition, Expression<Func<T, int, bool>> predicate) { return condition ? query.Where(predicate) : query; } public static IEnumerable<T> WhereIf<T>(this IEnumerable<T> query, bool condition, Func<T, bool> predicate) { return condition ? query.Where(predicate) : query; } }
扩展后就能直接使用WhereIf
List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); list.Add(6); list.Add(7); list.Add(8); list.Add(9); bool flag = true; list = list.WhereIf(flag, a => a >= 5).ToList();标签:predicate,WhereIf,扩展,list,Add,query,Net,condition From: https://www.cnblogs.com/weidaorisun/p/17182158.html