2012-03-12 7 views
1

私はList<B>を持ち、クラスBは公開プロパティAを持っています。プロパティ上の述語

BのリストをPredicate<A>でフィルタリングするにはどうすればよいですか?

答えて

5

あなたのリストがはmyListとあなたの述語myPredicateを命名されている場合、あなたはおそらくこのような何かしたい:

var result = myList.Where(b => myPredicate(b.A)) 

か、ラムダ式を使用することができ、例えば:

var result = myList.Where(b => b.A < 10) 

など、述語はb.A < 10となります。

多分、より完全なコードサンプルを提供する必要があります。あなたはLINQのを使用している場合

+0

これは私が 'myList.FindAll(B => yourPredicate(BA))'おかげ – wilsonlarg

+0

関数呼び出しが多い* scallable *その後、インラインラムダ探していたものです – Tigran

0
list.Where(i=>i.B == "something") 
3

、あなたはこれを行うことができます:あなたはLINQのを使用していない場合

// Define the predicate inline: 
var results = list.Where(b => b.A.Name == "Fred"); 

// or if you have the predicate defined separately: 
var results = list.Where(b => predicate(b.A)); 

、あなたはSystem.Collections.Generic.ListクラスにFindAllメソッドを使用することができます。

var results = list.FindAll(predicate);