Ich muss nur klarstellen, dass die angegebene Sammlung ein Element enthält.IEnumerable <T>. Enthält mit Prädikat
Ich kann das über collection.Count(foo => foo.Bar == "Bar") > 0)
tun, aber es wird die unnötige Arbeit tun - iterieren Sie die gesamte Sammlung, während ich auf das erste Auftreten stoppen muss.
Aber ich möchte versuchen, Contains()
mit einem Prädikat, z. foo => foo.Bar == "Bar"
.
Derzeit IEnumerable<T>.Contains
hat zwei Unterschriften:
IEnumerable<T>.Contains(T)
IEnumerable<T>.Contains(T, IEqualityComparer<T>)
Also muss ich eine Variable angeben, um zu überprüfen:
var collection = new List<Foo>() { foo, bar };
collection.Contains(foo);
oder schreibe meine benutzerdefinierte IEqualityComparer<Foo>
, die gegen meine Sammlung verwendet wird:
class FooComparer : IEqualityComparer<Foo>
{
public bool Equals(Foo f1, Foo f2)
{
return (f1.Bar == f2.Bar); // my predicate
}
public int GetHashCode(Foo f)
{
return f.GetHashCode();
}
}
es also noch andere Methoden Prädikat zu benutzen?