En C #, digamos que tengo una clase llamada Nota con tres variables de miembro de cadena.
public class Note
{
public string Title;
public string Author;
public string Text;
}
Y tengo una lista de tipo Nota:
List<Note> Notes = new List<Note>();
¿Cuál sería la forma más limpia de obtener una lista de todos los valores distintos en la columna Autor?
Podría recorrer la lista y agregar todos los valores que no son duplicados a otra lista de cadenas, pero esto parece sucio e ineficiente. Tengo la sensación de que hay una construcción mágica de Linq que hará esto en una sola línea, pero no he podido encontrar nada.
Default
comparador de igualdad. msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspxDistinción de la clase de nota por autor
fuente
Notes
enNotes.GroupBy()
un plurals
yaNote
que solo tendrá una sola nota?Jon Skeet ha escrito una biblioteca llamada morelinq que tiene un
DistinctBy()
operador. Ver aquí para la implementación. Tu código se vería asíActualización: después de volver a leer su pregunta, Kirk tiene la respuesta correcta si solo está buscando un conjunto distinto de Autores.
Muestra agregada, varios campos en DistinctBy:
fuente
Install-Package morelinq
Al usar la lógica anterior, podemos obtener los
Course
s únicos .fuente
fuente