リスト内の何かを見つけるための適切な述語デリゲートを作成するにはどうすればよいでしょうか ? 質問する

リスト内の何かを見つけるための適切な述語デリゲートを作成するにはどうすればよいでしょうか ? 質問する

MSDN で調べた後でも、T (T はクラス) のメンバー変数を使用して List の Find() メソッドを使用するための適切な述語をどのように形成すればよいのかまだわかりません。

例えば:

public class Car
{
   public string Make;
   public string Model;
   public int Year;
}

{  // somewhere in my code
   List<Car> carList = new List<Car>();
   // ... code to add Cars ...

   Car myCar = new Car();

   // Find the first of each car made between 1980 and 2000
   for (int x = 1980; x < 2000; x++)
   {
       myCar = carList.Find(byYear(x));
       Console.Writeline(myCar.Make + myCar.Model);
   }
}

「byYear」述語はどのようになるべきでしょうか?

(MSDN の例では、恐竜のリストについてのみ説明されており、不変の値「saurus」のみを検索します。述語に値を渡す方法は示されていません...)

編集: 私は VS2005/.NET2.0 を使用しているので、ラムダ表記法は利用できないと思います...

編集2: 異なる値に基づいてプログラム的に「検索」したい可能性があるため、例の「1999」を削除しました。例は、for-do ループを使用して 1980 年から 2000 年までの車の範囲に変更されました。

ベストアンサー1

ラムダ式は次のように使用できます。

myCar = carList.Find(car => car.Year == 1999);

おすすめ記事