public static IQueryable Filter(this IQueryable source, FilterCondition condition) { if (condition.HasValidFilter()) { var lambda = condition.ToExpression(source.ElementType); return(source.Provider.CreateQuery( Expression.Call( typeof(Queryable), "Where", new[] { source.ElementType }, source.Expression, Expression.Quote(lambda)))); } return(source); }