表达式树与sql查询

本文关键字:查询 sql 表达式 | 更新日期: 2023-09-27 17:51:05

我试图创建一个表达式树,它将通过我的表称为测试在列Foo中的所有字符串'email'。我几乎从msdn复制了一些小的变化,不能让它通过我的表搜索。如果能帮助我们搜索这个表达式树,那就太好了。非常感谢。

表结构Test

id int
foo char(10)
误差

没有泛型方法'Where'在类型'System.Linq。Queryable'与提供的类型参数

兼容
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);

表达式树与sql查询

您尝试这样调用Where:

Queryable.Where<SaleLog>((string pe) => pe.ToLower() == "bar")

那是不对的。应该是:

Queryable.Where<SaleLog, bool>((SaleLog pe) => pe.foo.ToLower() == "bar")

错误信息提示如下:

没有泛型方法'Where'在类型'System.Linq。Queryable'与提供的类型参数

兼容