Je dois juste préciser que la collection donnée contient un élément.IEnumerable <T> .Contains with predicate
Je peux faire cela via collection.Count(foo => foo.Bar == "Bar") > 0)
mais cela va faire le travail inutile - itérer toute la collection pendant que je dois m'arrêter à la première occurrence.
Mais je veux essayer d'utiliser Contains()
avec un prédicat, par ex. foo => foo.Bar == "Bar"
.
Actuellement IEnumerable<T>.Contains
a deux signatures:
IEnumerable<T>.Contains(T)
IEnumerable<T>.Contains(T, IEqualityComparer<T>)
Je dois préciser une variable pour vérifier:
var collection = new List<Foo>() { foo, bar };
collection.Contains(foo);
ou écrire mon habitude IEqualityComparer<Foo>
qui sera utilisé contre ma collection:
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();
}
}
Alors qu'il ya d'autres méthodes pour utiliser prédicat?