En C #, disons que j'ai une classe appelée Note avec trois variables membres String.
public class Note
{
public string Title;
public string Author;
public string Text;
}
Et j'ai une liste de type Note:
List<Note> Notes = new List<Note>();
Quel serait le moyen le plus propre d'obtenir une liste de toutes les valeurs distinctes dans la colonne Auteur?
Je pourrais parcourir la liste et ajouter toutes les valeurs qui ne sont pas des doublons à une autre liste de chaînes, mais cela semble sale et inefficace. J'ai le sentiment qu'il y a une construction Linq magique qui fera cela en une seule ligne, mais je n'ai rien pu trouver.
Default
comparateur d'égalité. msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspxDistinction de la classe Note par auteur
la source
Notes
commeNotes.GroupBy()
un pluriels
commeNote
détiendra uniquement un seul billet?Jon Skeet a écrit une bibliothèque appelée morelinq qui a un
DistinctBy()
opérateur. Voir ici pour l'implémentation. Votre code ressemblerait àMise à jour: après avoir relu votre question, Kirk a la bonne réponse si vous recherchez simplement un ensemble distinct d'auteurs.
Exemple ajouté, plusieurs champs dans DistinctBy:
la source
Install-Package morelinq
En utilisant la logique ci-dessus, nous pouvons obtenir les
Course
s uniques .la source
la source