Ottenere un elenco di valori distinti in List
In C#, diciamo che ho una classe chiamata Note con tre variabili membro String.
public class Note
{
public string Title;
public string Author;
public string Text;
}
E ho una lista di tipo Nota:
List<Note> Notes = new List<Note>();
Quale sarebbe il modo più pulito per ottenere un elenco di tutti i valori distinti nella colonna Autore?
Potrei iterare attraverso la lista e aggiungere tutti i valori che non sono duplicati ad un'altra lista di stringhe, ma questo sembra sporco e inefficiente. Ho la sensazione che ci sia qualche costruzione magica di Linq che lo faccia in una riga, ma non sono stato in grado di trovare nulla.
158
3
Questo restituirà una sequenza (
IEnumerable
) di valoriAuthor
-- uno per valore unico.Jon Skeet ha scritto una libreria chiamata morelinq che ha un operatore
DistinctBy()
. Vedi here per l'implementazione. Il vostro codice sarebbe simile aAggiornamento: Dopo aver riletto la tua domanda, Kirk ha la risposta corretta se stai solo cercando un insieme distinto di Autori.
Aggiunto esempio, diversi campi in DistinctBy: