2011-02-17 18 views
13

Quiero agregar distinto al código debajo. No puedo descifrar la sintaxis exacta. Gracias por adelantado.Linq a Entidades Cláusula Distintiva

var testdates = (from o in db.FMCSA_ME_TEST_DATA 
       orderby o.DATE 
       select new 
       { 
        RequestDate = o.DATE 
       }); 

Respuesta

16

utilizan el método Distinct() extensión.

Tenga en cuenta que Distinct() puede negar el orderby existente (lo he notado en LINQ to SQL), por lo que es posible que desee utilizar el método OrderBy() posteriormente.

var testdates = (from o in db.FMCSA_ME_TEST_DATA 
       select new 
       { 
        RequestDate = o.DATE 
       }).Distinct().OrderBy(x => x.RequestDate); 
+0

¿Estás seguro de Distinct() negating an order? No estoy viendo ese comportamiento (ejecutando una consulta similar), y me sorprendería mucho si lo hiciera –

+0

@Adam - He encontrado el problema OrderBy/Distinct con LINQ to SQL, pero puede no ser un problema para otros proveedores de LINQ . Ver http://programminglinq.com/blogs/marcorusso/archive/2008/07/20/use-of-distinct-and-orderby-in-linq.aspx – Greg

+0

Wow - no sabía acerca de ese error. Espero que se haya solucionado en EF4, independientemente de que no debería afectar * esta * consulta. +1 para publicar eso sin embargo. –

4
var testdates = (from o in db.FMCSA_ME_TEST_DATA 
       orderby o.DATE 
       select new 
       { 
        RequestDate = o.DATE 
       }).Distinct(); 

El truco es envolver la consulta entre paréntesis para que pueda llamar al método distinto, que ya se hizo, por lo que todo lo que necesitaba era a virar en la llamada al método al final.