2011-02-17 19 views
13

Desidero aggiungere uno distinto al codice qui sotto. Non riesco a capire la sintassi esatta. Grazie in anticipo.Linq to Entities Distinct Clause

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

risposta

16

utilizzare il metodo Distinct() estensione.

Si noti chepuò annullare lo orderby esistente (l'ho notato in LINQ su SQL), quindi è consigliabile utilizzare il metodo OrderBy() in seguito.

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

Sei sicuro di Distinct() annullando un ordine da? Non vedo questo comportamento (eseguendo una query simile) e sarei molto sorpreso se facessi –

+0

@Adam - Ho incontrato il problema OrderBy/Distinct con LINQ to SQL, ma potrebbe non essere un problema per altri provider LINQ . Vedi http://programminglinq.com/blogs/marcorusso/archive/2008/07/20/use-of-distinct-and-orderby-in-linq.aspx – Greg

+0

Wow - non sapevo di quell'errore. Spero che sia corretto in EF4, anche se non dovrebbe influenzare * questa * query. +1 per la pubblicazione di questo però. –

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

Il trucco è quello di avvolgere la query tra parentesi in modo da poter chiamare il metodo distinto, che avete già fatto, quindi tutto quello che serviva era a virare sulla chiamata al metodo, alla fine.

Problemi correlati