2

なぜ方法があるのにList<T>.Contains(T)方法がないのList<T>.Find(T)ですか?Find述語をサポートするsのみがサポートされます。ListIDのプロパティ値が入力されたTの既存のインスタンスがある場合(ただし、他のプロパティが欠落している場合)、特にカスタムIEquatable<T>を実装Tして使用したい場合は、このオブジェクトインスタンスを検索に提供して検索できないのはなぜですか?何がありますか。しかし、それがそうであるように、私たちはできません。私たちの呼び出しでIEquatable実装で行ったすべてを繰り返す必要があります。Find(predicate)

4

3 に答える 3

10

でメンバーを呼び出すことができIEquatable<T>ますPredicate<T>。そうすれば、あなたは自分自身を繰り返すことはありません。

MyClass a = new MyClass(); //sample for finding; IEquatable<MyClass>
List<MyClass> list = GetInstances();

MyClass found = list.Find( mc => mc.Equals(a) );
于 2011-08-15T14:40:30.433 に答える
1

これはどう

list.Any(i => i.ID == searchObj.ID);
于 2011-08-15T14:40:56.220 に答える
1

編集:

私は今あなたの質問を理解したと思います。List<T>.IndexOfこの目的のためにメソッドを使用できます。

int index = myList.IndexOf(mySample);

if(index != -1)
{
   var item = myList[index];
   // Do something with item.
}

しかし、これは非常に奇妙です。明らかに、あなたの平等の定義は全体像ではないからです。それは平等の悪用です、IMO.

于 2011-08-15T14:42:27.793 に答える