estoy mirando algo de código que toma un IEnumerable<T>
y la convierte en una List<T>
por lo que puede utilizar List<T>.Find(predicate)
:LINQ equivalente a la lista <T> .Find()?
var myEnumerable = ...;
var myList = new List<T>(myEnumerable);
var match = myList.Find(value => value.Aaa == aaa && value.Bbb == bbb);
¿Hay una manera de volver a escribir esto usando el LINQ extension methods que tiene el mismo efecto, pero sin construyendo un List<T>
extra como un paso intermedio?
El método de extensión FirstOrDefault(source, predicate)
parece un buen candidato, pero tratando de averiguar si es exactamente equivalente a Find
está haciendo que me duela la cabeza.
Eso es lo que sospechaba, pero es bueno escuchar la confirmación de alguien con más representante que yo (sonrisa). Entonces, ¿esto se ocupa de todos los casos extremos de la misma manera? (Colección vacía, nada que coincida, cualquier otra condición excepcional) –
@Joe: Sí. Le dará los mismos resultados: la primera coincidencia, o 'predeterminada (T)' en el caso de que no haya elementos coincidentes. Es efectivamente idéntico, excepto que funciona en cualquier 'IEnumerable' –