0

列 Foo のすべての文字列「email」について、test という名前のテーブルを調べる式ツリーを作成しようとしています。これを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);
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 に答える