Obtener una lista de valores distintos en List
En C#, digamos que tengo una clase llamada Note con tres variables miembro String.
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 iterar por la lista y añadir todos los valores que no sean duplicados a otra lista de cadenas, pero esto parece sucio e ineficiente. Tengo la sensación de que hay alguna construcción mágica de Linq que hace esto en una línea, pero no he sido capaz de encontrar nada.
158
3
Esto devolverá una secuencia (
IEnumerable
) de valores deAuthor
-- uno por valor único.Jon Skeet ha escrito una biblioteca llamada morelinq que tiene un operador
DistinctBy()
. Vea aquí para la implementación. Su código sería comoActualización: Después de releer tu pregunta, Kirk tiene la respuesta correcta si sólo buscas un conjunto distinto de Autores.
Añadido el ejemplo, varios campos en DistinctBy: