104 votos

¿Cómo utilizo Linq para obtener una lista de las propiedades única de una lista de objetos?

Estoy tratando de usar Linq para devolver una lista de los id de una lista de objetos, donde la identidad es una propiedad. Me gustaría ser capaz de hacer esto sin un bucle a través de cada uno de los objetos y tirar de la identificadores únicos que me parece.

Tengo una lista de objetos de tipo Miclase y una de las propiedades de esta clase es un IDENTIFICADOR.

public class MyClass
{
  public int ID { get; set; }
}

Lo que yo quiero hacer es escribir una consulta de Linq para volver me muestra una lista de los Identificadores de

¿Cómo puedo hacer que dado un IList<MyClass> que devuelve un IEnumerable<int> de los ids?

Estoy seguro de que debe ser posible hacerlo en una o dos líneas utilizando Linq en lugar de bucle a través de cada elemento en la Miclase lista y la adición de los valores únicos en una lista.

Cualquier ayuda en la creación de una solución elegante sería muy apreciada!

204voto

Marc Gravell Puntos 482669
IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();

19voto

CMS Puntos 315406

Utilice el operador Distinct:

var idList = yourList.Select(x=> x.ID).Distinct();

11voto

Dana Puntos 153

Con recta Linq, la Distinct() extensión:

var idList = (from x in yourList select x.ID).Distinct();

4voto

Black Eagle Puntos 161
        int[] numbers = {1,2,3,4,5,3,6,4,7,8,9,1,0 };
        var nonRepeats = (from n in numbers select n).Distinct();


        foreach (var d in nonRepeats)
        {

            Response.Write(d);
        }

SALIDA

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X