我正在尝试为Access-Control-Request-Method: PUT
创建Expression
,以下是我的代码。
ExpandoObject
我在var parameter = Expression.Parameter(typeof(KeyValuePair<string, object>), "k");
var left = Expression.Property(parameter, "Key");
var right = Expression.Constant(prop, typeof(string));
var equal = Expression.Equal(left, right);
var whereMethod = typeof(Queryable).GetMethods(BindingFlags.Public | BindingFlags.Static)
.First(_ => _.Name == "Where").MakeGenericMethod(typeof(ExpandoObject));
propExp = Expression.Call(whereMethod, propExp, equal);
'System.Dynamic.ExpandoObject'类型的表达式不能用于'System.Linq.IQueryable`类型的参数
有人可以帮忙吗?
仙人
答案 0 :(得分:1)
表达式期望System.Dynamic.ExpandoObject
作为第一个参数,就像异常状态一样:
类型的表达式System.Dynamic.ExpandoObject&#39;不能用于 类型参数#System; Linq.IQueryable`
在这行代码中,您尝试将where linq转换为Expando对象:
var whereMethod = typeof(Queryable).GetMethods(BindingFlags.Public | BindingFlags.Static)
.First(_ => _.Name == "Where").MakeGenericMethod(typeof(ExpandoObject));
但是你失败了,因为你有一个Iqueryable对象:
var whereMethod = typeof(可查询)
调整代码,使whereMethod变量成为动态expando对象,它将起作用。