2009-08-18 8 views
1

デリゲートの使い方を理解しており、述語を利用するためのラムダ式でも問題ありません。私は、引数として述語を使用し、私のコレクションに一致するものを見つけるために、述語を参照する方法を見つけ出すことはできませんメソッドを実装したいポイントに来ている:述語を使用して一致アルゴリズムを実装するにはどうすればよいですか?

private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match) 
{ 
    foreach (T item in collection) 
    { 
     //So how do I reference match to return the matching item? 
    } 
    return default(T); 
} 

私がしたいです誰かが私に説明を与えるか、述語の実施に関するリファレンスに私を指すことができる場合、私はそれを感謝

ICollection<MyTestClass> receivedList = //Some list I've received from somewhere else 
MyTestClass UsefulItem = FindInCollection<MyTestClass>(receivedList, i => i.SomeField = "TheMatchingData"); 

:その後に似て何かを使用して、これを参照します。すべてが実際にそれらを使用する機能を実装していない、(私はうまく行うことができます)述語を渡すに関連するドキュメントがそこにあなたはただのような述語を使用

おかげ

+0

Whereメソッドを使用できないのはなぜですか? –

+0

@Cameron:D'oh!なぜなら私がSystem.Linqを参照していなかったからです。私はそれを使うことができると思ったが、インテリセンスには現れなかった。私はもっ​​と眠ります。笑ありがとう。 – BobTheBuilder

+0

@Cameron:答えを提供するためには、実装が可能なのは常に便利ですが、余分なものは今でも他の状況でも使用できるかもしれません。 – BobTheBuilder

答えて

7
private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match) 
{ 
    foreach (T item in collection) 
    { 
     if (match(item)) 
      return item; 
    } 
    return default(T); 
} 

...らしいです他の代表者。これは基本的に、T型の引数で呼び出すことができるメソッドです。これはtrueを返します。

+0

ありがとう、私はちょうどこのパズルの単純な欠けている部分の情報を見つけることができませんでした。迅速な対応に感謝します! +1 – BobTheBuilder

関連する問題