0

我正在尝试创建一个表达式树,它将通过我的名为 test 的表查看 Foo 列中的所有字符串“电子邮件”。我几乎从 msdn 复制了一些小改动,但无法让它在我的表中搜索。让这个表达式树搜索的任何帮助都会很棒。非常感谢您

称为测试的表结构

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);
4

1 回答 1

1

您尝试这样调用Where

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

那是不对的。它应该是:

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

错误消息暗示了这一点:

类型“System.Linq.Queryable”上没有通用方法“Where”与提供的类型参数兼容

这是完全准确的。

于 2013-01-08T00:08:04.860 回答