1

LINQ についての講演を予定しており、コレクションのクエリがどのように機能していたかについて言及したいと思います。.Net 1.1 に戻ると、コレクション内の各アイテムを調べて、フィルター処理されたコレクションに含めるかどうかを決定する別のメソッドのアドレスを渡すメソッド (Find() かな?) があったことを覚えているようです。

これは完全に記憶違いですか?構文は当時としては珍しいものだったので、それは私に固執しました。

私はそれが次のようなものだと思った:

public bool ContainsFoo(string term){
    if(term.contains("Foo"){
       return true;
    }
    return false;
}

そして、次のように呼び出すことができます。

 filteredCollection = collection.Find(ContainsFoo);

開発者が関数をインラインで記述できるようになったため、LINQ のコーディングがいかに高速であったかについて多くの人がコメントしたことを覚えているようです。以前は関数の「アウトライン」をどのように書いていたのでしょうか?

4

1 に答える 1

3

LINQ が登場する前は、すべての組み込みのList/List<T>メソッドに限定されていました。そうです、 Findはその 1 つです (今もそうです)。違いは、インラインで実行できるPredicate<T>a とは対照的に、 aを期待することです。Func<Boolean, T>

var found = list.Find(delegate(Item item) { return item != null; });

または、名前付きメソッドを使用して示したように。

于 2013-07-09T14:07:21.523 に答える