Solo necesito aclarar que la colección dada contiene un elemento.IEnumerable <T> .Contiene el predicado
que pueda hacer eso a través de collection.Count(foo => foo.Bar == "Bar") > 0)
pero va a hacer el trabajo innecesario - iterar toda la colección, mientras que necesito parar en la primera aparición.
Pero quiero tratar de usar Contains()
con un predicado, p. Ej. foo => foo.Bar == "Bar"
.
Actualmente IEnumerable<T>.Contains
tiene dos firmas:
IEnumerable<T>.Contains(T)
IEnumerable<T>.Contains(T, IEqualityComparer<T>)
Así que tengo que especificar alguna variable para comprobar:
var collection = new List<Foo>() { foo, bar };
collection.Contains(foo);
o escribir mi costumbre IEqualityComparer<Foo>
que será utilizado en contra de mi colección:
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();
}
}
Entonces ¿Hay otros métodos para utilizar el predicado?