public IQueryable <T> Filter <T>(IQueryable <T> entities, Filtering filtering, Func <Filter, string> buildWhereClauseHandler) { if (filtering.Filters.Any()) { var where = new StringBuilder(); foreach (var compositeFilter in filtering.Filters) { var simpleWhere = new StringBuilder(); foreach (var filter in compositeFilter.Filters) { if (simpleWhere.Length > 0) { simpleWhere.Append(" " + ToLinqOperator(compositeFilter.Logic) + " "); } simpleWhere.Append(buildWhereClauseHandler(filter)); } if (where.Length > 0) { where.Append(" " + ToLinqOperator(filtering.Logic) + " "); } if (simpleWhere.Length > 0) { where.Append("(" + simpleWhere.ToString() + ")"); } } entities = entities.Where(where.ToString()); } return(entities); }
protected virtual IQueryable <TEntity> Filter(IQueryable <TEntity> entities, Filtering filtering) { if (filtering.Filters.Any()) { var where = new StringBuilder(); foreach (var compositeFilter in filtering.Filters) { var simpleWhere = new StringBuilder(); foreach (var filter in compositeFilter.Filters) { if (simpleWhere.Length > 0) { simpleWhere.Append(" " + ToLinqOperator(compositeFilter.Logic) + " "); } simpleWhere.Append(BuildWhereClause <TEntity>(filter)); } if (where.Length > 0) { where.Append(" " + ToLinqOperator(filtering.Logic) + " "); } if (simpleWhere.Length > 0) { where.Append("(" + simpleWhere + ")"); } } entities = entities.Where(where.ToString()); } return(entities); }
public IQueryable <T> Filter <T>(IQueryable <T> entities, Filtering filtering) { return(Filter <T>(entities, filtering, BuildWhereClause <T>)); }