これはおそらくばかげた質問ですが、ここに行きます。データベースのVARCHAR列から解析された文字列、または任意の文字列から述語<T>を動的に構築できるようにしたいと思います。たとえば、データベースの列に次の文字列が含まれているとします。
return e.SomeStringProperty.Contains("foo");
これらのコード/文字列値は、汎用「e」の可能なプロパティが何であるかを認識し、ブール値を返す必要があることを認識して、データベースに格納されます。次に、魔法のような素晴らしいファンタジーの世界では、次のように、述語が何であるかを知らなくてもコードを実行できます。
string predicateCode = GetCodeFromDatabase();
var allItems = new List<SomeObject>{....};
var filteredItems = allItems.FindAll(delegate(SomeObject e) { predicateCode });
またはラムダ化:
var filteredItems = allItems.FindAll(e => [predicateCode]);
おそらくこれほど単純なことはないでしょうが、おそらくReflection.Emitを使用して、テキストから動的にデリゲートコードを作成し、それをFindAll <T>(またはその他の匿名/拡張)メソッドに渡す方法はありますか?