Pregunta

Sólo quería comprobar si hay manera de hacerlo distinto por varias columnas. Gracias de antemano !!!

Por cierto, he encontrado una gran extensión de LINQ aquí pero necesitan alguna orientación a utilizarlo para múltiples columnas

¿Fue útil?

Solución

Bueno, se puede hacer la proyección en primer lugar:

var qry = db.Customers.Select(cust => new {cust.ID, cust.Name, cust.Region})
                    .Distinct();

O en la sintaxis de consulta:

var qry = (from cust in db.Customers
          select new {cust.ID, cust.Name, cust.Region}).Distinct();

Que hacer?

Otros consejos

En lugar de Distinto puede utilizar GroupBy y luego seleccionar el registro Top mayoría de cada grupo

Cómo LINQ Distinto de múltiples campos sin anónima tipos

  
    

retorno de o en objEntity

              group o by new
              {
                  o.Field1,
                  o.Field2,
                  o.Field3,
                  o.Field4,
                  o.Field5
              } into grp
              select grp.FirstOrDefault();
  

Esto le dará la EntityObject En lugar de la AnonymousType

Por "distinta por varias columnas" lo que realmente quieren decir es un grupo de.

Cuando pide distinto, significa que vas a encontrar todas las filas distintas, o, un grupo mediante el uso de todas las columnas de la tabla.

Si desea sólo para obtener agrupaciones distintas para un subconjunto de las columnas, a continuación, utilizar un grupo de en su cláusula, especificando las columnas para agrupar. A continuación, seleccione los grupos, ya que sólo desea un juego de llaves para cada grupo.

Otra opción fácil es crear una única cadena distinta.

var result = collection.DistinctBy(c => c.Field1 + "." + c.Field2 + "." + c.Field3);

query var = (de quiste en db.Customers seleccionar nueva {cust.ID, cust.Name, cust.Region}). GroupBy (x => new {x.Name, x.Region}). Seleccionar (z => z.OrderBy (i => i.cust) .FirstOrDefault ()) ToList ();.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top