using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Linq.Expressions; namespace DataAccess.Extensions { public static class IQueryableExtensions { public static IQueryable ApplyFilter(this IQueryable query, Expression> filter) { return filter == null ? query : query.Where(filter); } public static IQueryable ApplyFilters(this IQueryable query, IEnumerable>> filters) { if (filters == null) return query; foreach (var filter in filters) { query = query.ApplyFilter(filter); } return query; } public static IQueryable AsNoTracking(this IQueryable source, bool track) where T : class { return track ? source : source.AsNoTracking(); } } }