0

テーブルへのリフレクション呼び出しを実行し、where メソッドを呼び出そうとしています。MVC での使用 (2)、

エンティティ フレームワーク内のデータ。データを取得しようとしている現在 2 つのテーブルをハードコーディングできます。

where メソッドの呼び出し方に問題があります。

そして、私がまだこれに対する答えを見つけていないことに単に驚いた? したがって、すでに回答があり、適切なものを検索していない場合は、必ずお知らせください。

以下を持っている

string search_table

PropertyInfo prop = database.GetType().GetProperty(search_table);
object table = prop.GetValue(WRG,null);
var methods = table.GetType().GetMethods();

var where_method = table.GetType().GetMethod("Where");
var result_data = where_method.Invoke(table, new object[]{"table", "table.-FIELD-NAME.Contains(search_string)"});

リフレクションを使用しない場合は、var result_data = database.-TABEL-.Where(t => t.-FIELD.Contains(search_string)); で where メソッドを呼び出します。

そのため、その情報を呼び出しにコピーしようとしましたが、何もありません。

invoke が要求する場所: (object obj, object[] parameters)

私を正しい方向に向けてくれてありがとう。

4

1 に答える 1

0

Whereオブジェクトが を実装しているかどうかに応じて、通常はまたはクラスで定義される拡張メソッドです。System.Linq.QueryableSystem.Linq.EnumerableIQueryable

EnumerableバージョンにはパラメーターFunc<T, bool>が必要です。QueryableバージョンにはパラメーターExpression<Func<T, bool>>が必要です。どちらのバージョンも、パラメーターの文字列表現を受け入れません。パラメーターを文字列として渡す必要がある場合は、LINQ Dynamic Query ライブラリを参照する必要があります。

于 2012-11-30T18:54:59.993 に答える