Zählt die Anzahl der angegebenen Objekt in einer Liste mit LINQ
Ich habe eine Liste mit mehreren vorkommen des gleichen Objekts. Jetzt muss ich zählen, wie oft das Objekt ist in der Liste enthalten.
int count = 0;
foreach (IMyObject item in myList)
if (item == object2Count)
count++;
Ich bin sicher, dass dies geschehen kann schöner mit LINQ, aber LINQ ist immer noch ein Rätsel für mich.
Meine erste Frage ist: Wie würde ich das zählen der Objekte über LINQ und die zweite Frage: Wird diese LINQ-version langsamer oder schneller? Ich bin mit einer ObservableCollection und die Anzahl der Elemente in der Liste ist normalerweise eher klein ... normalerweise nicht mehr als 20.
Vielen Dank im Voraus,
Frank
InformationsquelleAutor Aaginor | 2011-06-20
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einfach zählen von Objekten in einer Sammlung über die
Count
- Erweiterung-Methode. Entweder:oder
Im Hinblick auf die performance sollte die gleiche sein, wie die
foreach
Schleife.(Ihr Prädikat
item == object2Count
sieht ein bisschen komisch, aber das ist nicht im Zusammenhang mit der Frage, wie zählen von Objekten in einer Sammlung.)==
ist mit Referenz-Gleichheit, und Sie speichern Sie nicht die gleiche Instanz mehr als einmal in der Sammlungcount
0 oder 1. Also im Grunde sind Sie determning wennobject2Count
gehört zu der Sammlung. Es gibt effizientere Möglichkeiten, um festzustellen, dass die Verwendung derAny
- Erweiterung-Methode. Wenn auf der anderen Seite haben Sie überschrieben die==
Betreiber Ihr Prädikat ist in Ordnung.Suchen Sie bei 101 LINQ Samples
int count = myList.Count(Element => item == object2Count);
Versuchen Sie dies:
object2Count
aber die Anzahl der Objekte der KlasseObjectClass