我正在尝试创建一个表达式树,它将在我的表中查看名为test的列Foo中所有字符串'email'。我几乎从msdn复制了一些小的更改,无法通过我的表搜索它。任何帮助使这个表达式树搜索都会很棒。非常感谢
名为Test的表结构
id int
foo char(10)
错误
类型'System.Linq.Queryable'上没有泛型方法'where'与提供的类型参数兼容
var s = new m2Entities().Test
var queryableData = new m2Entities().SaleLogs.AsQueryable<SaleLog>();
ParameterExpression pe = Expression.Parameter(typeof(string), "foo");
Expression left = Expression.Call(pe, typeof(string).GetMethod("ToLower", System.Type.EmptyTypes));
Expression right = Expression.Constant("bar");
Expression e1 = Expression.Equal(left, right);
MethodCallExpression whereCallExpression = Expression.Call(typeof(Queryable),
"Where",
new Type[] { queryableData.ElementType },
queryableData.Expression,
Expression.Lambda<Func<string, bool >>(e1,new ParameterExpression[] { pe }));
var results = queryableData.Provider.CreateQuery<string>(whereCallExpression);
答案 0 :(得分:1)
您尝试像这样致电Where
:
Queryable.Where<SaleLog>((string pe) => pe.ToLower() == "bar")
这是不对的。它应该是:
Queryable.Where<SaleLog, bool>((SaleLog pe) => pe.foo.ToLower() == "bar")
错误消息暗示:
类型'System.Linq.Queryable'上没有泛型方法'where'与提供的类型参数兼容
完全准确。