私は次の方法を持っています:
private List<T> GetEntities<T>(T entity) {
// ...
}
と
public virtual List<T> Find<T>(Predicate<T> match) {
// ...
}
ラムダ式の値を取得するにはどうすればよいPredicate<T>
ですか?
私は次のようなことをしたいと思います:
var result = Find<MyObject>(o => o.Name == "Something")
そして、私がするFind
方法では:
public virtual List<T> Find<T>(Predicate<T> match) {
// ...
string name = myObj.Name // equals to "Something"
return GetEntities<T>(myObj) //Note that here is my object with the parameters passed via lambda
// ...
}
これどうやってするの?
編集: MyObjectを受け取るメソッドはすでに存在します。エンティティをフィルタリングするためだけにオブジェクトをインスタンス化せずに、ラムダ式を使用できるメソッドが必要です。FuncとPredicateのどちらを使用するかわかりません
編集2:要求に応じて、これが私が達成することの具体的な例です:
現在、特定のフィルターを使用してオブジェクトを取得する場合は、次を使用します。
Person p = new Person() { Name = "John" };
var result = GetEntities<Person>(p);
私がしたいこと:
var result = Find<Person>(p => p.Name = "John");
ただし、内部的には前のメソッドを引き続き使用したいので、式をオブジェクトに変換してから、GetEntities<Person>(p)
結論: 私は述語とFuncのものと本当に多くの混乱をしました。それらをオブジェクトとして扱うことができると思いましたが、それは表現であり、私の質問はこれらの要素の概念から完全に外れました。