Tengo un class A { public float Score; ... }
y un IEnumerable<A> items
y me gustaría encontrar el A
que tiene puntaje mínimo.Cómo utilizar linq para encontrar el mínimo
El uso de items.Min(x => x.Score)
da la puntuación mínima y no la instancia con puntaje mínimo.
¿Cómo puedo obtener la instancia iterando solo una vez a través de mis datos?
Editar: Siempre hay tres soluciones principales:
escribir un método de extensión (propuesto por Svish). Pros: Fácil de usar y evalúa el puntaje solo una vez por artículo. Contras: Necesita un método de extensión. (Escogí esta solución para mi aplicación).
Usando Agregado (propuesto por Daniel Renshaw). Pros: utiliza un método integrado LINQ. Contras: levemente ofuscado para el ojo no entrenado y llama al evaluador más de una vez.
Implementando IComparable (propuesto por cyberzed). Pros: Puede usar Linq.Min directamente. Contras: Corregido en un comparador: no se puede elegir libremente el comparador cuando se realiza el cálculo mínimo.
No del todo. Saber el índice no ayuda directamente con IEnumerable. En algunos casos, uno debe iterar nuevamente usando el índice para encontrar la instancia deseada. – Danvil