Ich habe eine class A { public float Score; ... }
und eine IEnumerable<A> items
und möchte die A
finden, die minimale Punktzahl hat.Wie man linq verwendet, um das Minimum zu finden
Die Verwendung von items.Min(x => x.Score)
gibt die minimale Punktzahl und nicht die Instanz mit minimaler Punktzahl.
Wie kann ich die Instanz durch Iterieren nur einmal durch meine Daten bekommen?
bearbeiten: So lange gibt es drei Hauptlösungen:
eine Erweiterungsmethode Schreiben (von Svish vorgeschlagen). Pros: Einfach zu bedienen und bewertet Score nur einmal pro Artikel. Nachteile: Benötigt eine Erweiterungsmethode. (Ich wählte diese Lösung für meine Anwendung.)
Verwendung von Aggregat (vorgeschlagen von Daniel Renshaw). Vorteile: Verwendet eine integrierte LINQ-Methode. Nachteile: Leicht zum ungeübten Auge verschleiert und ruft Evaluator mehr als einmal.
Implementierung IComparable (von Cyberzed vorgeschlagen). Pros: Kann Linq.Min direkt verwenden. Nachteile: Fixed zu einem Vergleicher - kann Comparer nicht frei wählen, wenn die minimale Berechnung durchgeführt wird.
Nicht ganz. Den Index zu kennen hilft nicht direkt für IEnumerable. In einigen Fällen muss man erneut mit dem Index iterieren, um die gewünschte Instanz zu finden. – Danvil