/// <summary> /// Creates a Where method call expression to be invoked on an expression e.g. (parameter, member, method call) of type IQueryable<T>. /// </summary> /// <typeparam name="TSource"></typeparam> /// <param name="expression"></param> /// <param name="filterGroup"></param> /// <param name="parameterName"></param> /// <returns></returns> public static MethodCallExpression GetWhere <TSource>(this Expression expression, DataSource.FilterGroup filterGroup) where TSource : class { LambdaExpression filterExpression = filterGroup.GetFilterExpression <TSource>(); Type[] genericArgumentsForMethod = new Type[] { typeof(TSource) }; return(Expression.Call(typeof(Queryable), "Where", genericArgumentsForMethod, expression, filterExpression)); }
private static Expression <Func <T, bool> > _GetFilterExpression <T>(this FilterGroup filterGroup, string parameterName = "f") where T : class => filterGroup.GetFilterExpression <T>(parameterName);