带有sql查询的表达式树

时间:2013-01-07 22:38:35

标签: c# .net expression-trees

我正在尝试创建一个表达式树,它将在我的表中查看名为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);

1 个答案:

答案 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'与提供的类型参数兼容

完全准确。