这是我的代码 - 我正在尝试生成Lambda
public static void CallIEnumerableWhere()
{
List<int> lst = new List<int>();
lst.Add(1);
lst.Add(2);
lst.Add(3);
Type console = typeof(Enumerable);
var tt = console.GetMethods().Where(x => x.Name.Contains("Where")).ToList()[0];
var genericParam1 = Expression.Parameter(typeof(IEnumerable<>).MakeGenericType(typeof(IEnumerable<>)));
MethodInfo method2 = tt.MakeGenericMethod(typeof(IEnumerable<>));
var args = tt.GetGenericArguments();
ParameterExpression lambdaParam2 = Expression.Parameter(args[0]);
Expression methodCall = Expression.Call(null, method2, lambdaParam2);
//^^ERROR ON THIS LINE^^^
//var finalLambdaExpression = Expression.Lambda<...>...
}
我不确定我做错了什么。我想模仿:
int z = 1;
lst.Where(x => x == z)
这是我在运行时获得的错误:
发生了'System.ArgumentException'类型的未处理异常 System.Core.dll
其他信息:方法 System.Collections.Generic.IEnumerable
1[System.Collections.Generic.IEnumerable
1 [T]] 其中,[IEnumerable的1](System.Collections.Generic.IEnumerable
1 [System.Collections.Generic.IEnumerable1[T]], System.Func
2 [System.Collections.Generic.IEnumerable`1 [T],System.Boolean]) 包含通用参数
请协助。