C# 使用表达式动态创建Where子句

C# 使用表达式动态创建Where子句,c#,linq,generics,dynamic,expression,C#,Linq,Generics,Dynamic,Expression,我必须以以下方式使用表达式动态创建Where子句: Type enumerableType = typeof(Enumerable); MemberInfo[] members = enumerableType.GetMember("Where*"); MethodInfo whereDef = (MethodInfo)members[0]; Type TSource = whereDef.GetGenericArguments()[0]; Type[] types = { ty

我必须以以下方式使用表达式动态创建Where子句:

Type enumerableType = typeof(Enumerable);
MemberInfo[] members = enumerableType.GetMember("Where*");
MethodInfo whereDef = (MethodInfo)members[0]; 
Type TSource = whereDef.GetGenericArguments()[0]; 
Type[] types = 
{ 
    typeof(IEnumerable<>).MakeGenericType(TSource), 
    typeof(Func<,>).MakeGenericType(TSource, typeof(Boolean)) 
};

MethodInfo method = enumerableType.GetMethod("Where", types);

Expression.Call(null, method , new Expression[]
{
    Expression.Lambda(newEX,new ParameterExpression[]{param})
});

你想实现什么?我想动态地创建Where子句。我是如何发现错误的。我必须使用Method.MakeGenericMethod();在将其传递到Expression.Call()之前,如果您解决了问题,请将解决方案作为答案发布并接受它。其他用户可能会觉得这很有帮助。下面链接中的答案可能会有所帮助
Expression.Call(null, (MethodInfo) methodof(Enumerable.Where), 
    new Expression[] ...