Los metodos de colecciones genericas IndexOf() o Contains() funcionan muy bien cuando se tienen listas de tipos simples como List<string> o List<int>, pero NO cuando se tienen listas de objetos y se desea buscar un objeto con determinadas propiedades, es decir si tenemos una lista como la siguiente:
List<claseParticular> lista = new List<claseParticular>();
y tal lista contiene un objetoParticular, entonces si se crea una nueva instancia y se le asignan los mismos parametros que el objeto incluido en la lista y luego se lo pasa como parametro al metodo Contains, se obtendrá un false aun cuando los objetos tengan los mismos parametros (son instancias diferentes y residen en lugares diferentes de memoria)
lista.Contains(objetoParticular) = false
Linq y las expresiones Lambda ofrecen una solución bastante simple a este problema:
lista.Any(x => x.parametro == valor);
de esta manera la expresion lambda funcionará como una condicion where y retornará true en caso de encontrarse un objeto que cumpla tal condicion o condiciones si se adiciona el operador AND.





