Em C #, digamos que eu tenha uma classe chamada Note com três variáveis de membro String.
public class Note
{
public string Title;
public string Author;
public string Text;
}
E eu tenho uma lista do tipo Nota:
List<Note> Notes = new List<Note>();
Qual seria a maneira mais limpa de obter uma lista de todos os valores distintos na coluna Autor?
Eu poderia percorrer a lista e adicionar todos os valores que não são duplicados a outra lista de strings, mas isso parece sujo e ineficiente. Sinto que há alguma construção mágica do Linq que fará isso em uma linha, mas não consegui pensar em nada.
Default
comparador de igualdade. msdn.microsoft.com/pt-br/library/bb348436(v=vs.110).aspxDistinta a classe Note por autor
fonte
Notes
noNotes.GroupBy()
plural,s
poisNote
só conterá uma única nota?Jon Skeet escreveu uma biblioteca chamada morelinq, que possui um
DistinctBy()
operador. Veja aqui a implementação. Seu código seria semelhanteAtualização: depois de reler sua pergunta, Kirk tem a resposta correta se você está procurando apenas um conjunto distinto de autores.
Exemplo adicionado, vários campos no DistinctBy:
fonte
Install-Package morelinq
Usando a lógica acima, podemos obter os
Course
s exclusivos .fonte
fonte