Angenommen, ich habe in C # eine Klasse namens Note mit drei String-Mitgliedsvariablen.
public class Note
{
public string Title;
public string Author;
public string Text;
}
Und ich habe eine Liste vom Typ Hinweis:
List<Note> Notes = new List<Note>();
Was wäre der sauberste Weg, um eine Liste aller unterschiedlichen Werte in der Spalte Autor zu erhalten?
Ich könnte die Liste durchlaufen und alle Werte, die keine Duplikate sind, zu einer anderen Liste von Zeichenfolgen hinzufügen, aber dies scheint schmutzig und ineffizient zu sein. Ich habe das Gefühl, dass es eine magische Linq-Konstruktion gibt, die dies in einer Zeile erledigt, aber ich konnte mir nichts einfallen lassen.
Default
Gleichheitsvergleichs unterschiedlich. msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspxUnterscheiden Sie die Note-Klasse nach Autor
quelle
Notes
so inNotes.GroupBy()
einem Plural sein,s
wieNote
es nur eine einzige Note enthält?Jon Skeet hat eine Bibliothek namens morelinq geschrieben, die einen
DistinctBy()
Operator hat. Siehe hier für die Implementierung. Ihr Code würde so aussehenUpdate: Nach dem erneuten Lesen Ihrer Frage hat Kirk die richtige Antwort, wenn Sie nur nach einer bestimmten Gruppe von Autoren suchen.
Beispiel hinzugefügt, mehrere Felder in DistinctBy:
quelle
Install-Package morelinq
Mit der obigen Logik können wir die eindeutigen
Course
s erhalten.quelle
quelle