Wie bekomme ich eine eindeutige Liste von einer Liste von Objekten?
Ich habe eine List<MyClass> someList
.
class MyClass
{
public int Prop1...
public int Prop2...
public int Prop3...
}
Ich würde gerne wissen, wie man eine neue unterschiedliche List<MyClass> distinctList
aus List<MyClass> someList
, aber nur den Vergleich zu Prop2
.
Kommentar zu dem Problem
duplizieren: stackoverflow.com/questions/489258/... Kommentarautor: Luis
InformationsquelleAutor der Frage Willem | 2011-02-14
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider gibt es keine wirklich einfache built-in Unterstützung für dieses in den Rahmen vor - aber Sie können den
DistinctBy
Umsetzung habe ich in MoreLINQ., Die Sie verwenden würden:
(Sie können nur die
DistinctBy
Umsetzung. Wenn Sie lieber verwenden Sie eine Microsoft-Implementierung, ich glaube, es gibt so etwas ähnliches in das System.Interaktive Montage von Reactive Extensions.)InformationsquelleAutor der Antwort Jon Skeet
Können Sie emulieren den Effekt von
DistinctBy
mitGroupBy
und dann einfach den ersten Eintrag in der jeweiligen Gruppe. Vielleicht ein bisschen langsamer, der andere Implementierungen aber.InformationsquelleAutor der Antwort CodesInChaos
müssen Sie
.Distinct(..);
- Erweiterung-Methode.Hier ist eine schnelle Probe:
Vergessen Sie nicht, über
GetHashCode
.Verwendung:
InformationsquelleAutor der Antwort Ilya Smagin
Überschreiben Equals(object obj) und GetHashCode() Methoden:
dann einfach anrufen:
InformationsquelleAutor der Antwort Waldemar Gałęzinowski
Erstellen Sie eine Klasse, die die IEqualityComparer Schnittstelle, die nur Prüfungen für Ihre Prop2-Eigenschaft. Sie können dann übergeben Sie eine Instanz dieser Klasse, um die Deutliche Erweiterung Methode.
InformationsquelleAutor der Antwort Christian
Sieben. Jahre. Später.
Ich weiß, es ist schon eine Weile her, aber ich brauchte die einfachste Antwort und in dieser Zeit (mit .NET 4.5.1) fand ich das folgende, das die meisten straight-forward-Antwort, die ich bekommen konnte:
Meine situation ist, dass ich ein Z. B. concurrentdictionary, die in etwa so aussieht:
ConcurrentDictionary<long, FileModel>
Den Z. B. concurrentdictionary Werte-Eigenschaft ist im Grunde meine
List<FileModel>
.*FileModel hat eine groupId, ist nicht unbedingt eindeutig (wenn auch natürlich der Schlüssel (lange), dass ich hinzufügen, die FileModel Objekt in das Wörterbuch ist einzigartig in der FileModel).
*Namens für Klarheit im Beispiel.
Der Punkt ist, dass ich eine große Anzahl von FileModels (angenommen 100), die Z. B. concurrentdictionary und innerhalb dieser 100 FileModels es gibt 5 verschiedene groupIds.
In diesem Punkt, ich brauche nur eine Liste der unterschiedlichen Gruppen-id.
So, wenn ich nochmal hatte gerade eine Liste von FileModel der code würde wie folgt Aussehen:
InformationsquelleAutor der Antwort raddevus