Frage

Ich habe eine riesige Sammlung (die ich als zählbare werfen kann mit OfType <> ()) von Objekten. Jedes dieser Objekte verfügt über eine Category Eigenschaft, die aus einer Liste irgendwo sonst in der Anwendung gezogen wird. Diese Sammlung kann Größen von Hunderten von Gegenständen erreichen, aber es ist möglich, dass nur sagen, 6/30 der möglichen Kategorien tatsächlich verwendet werden. Was ist die schnellste Methode, um diese 6 Kategorien zu finden? Die Größe der riesigen Sammlung entmutigt mich von nur über die ganze Sache laufen und alle eindeutigen Werte zurückgegeben werden, so gibt es eine schnellere Methode, dies zu erreichen?

Im Idealfall würde ich die Kategorien in eine List<string> sammeln.

War es hilfreich?

Lösung

Wenn Sie .NET verwenden 3.5 dann versuchen, diese:

List<string> categories = collection
    .Cast<Foo>()
    .Select(foo => foo.Category)
    .Distinct()
    .ToList();

Es sollte sehr schnell sein.

gehe ich davon aus diesen Objekten ursprünglich aus einer Datenbank kamen? Wenn ja, dann sollten Sie die Datenbank bitten, die Arbeit für Sie zu tun. Wenn es ein Index für diese Spalte ist, dann werden Sie das Ergebnis der Nähe von sofort erhalten, ohne auch nur die Objekte in dem Speicher holen zu müssen.

Andere Tipps

Die Größe der riesigen Sammlung schreckt mich nur über die ganze Sache laufen und Rückkehr alle eindeutigen Werte

Ich fürchte, um alle gebrauchten Kategorien zu finden, die Sie einmal an jedem Punkt suchen müssen, so dass Sie das Iterieren kaum vermeiden können (es sei denn, Sie den Überblick über die aktuell verfügbaren Kategorien zu halten, während der Sammlung Gebäude).

Versuchen Sie, wenn Mark Byers Lösung schnell genug für Sie ist und nur Sorgen um seine Leistung, wenn es nicht ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top