2012-07-17 10 views
5

Ho un'entità chiamata Billings con una proprietà di DateTime. Ho bisogno di trovare le date in modo univoco per poterle esaminare e fare alcune cose. ho provato:Data distinta con Linq

var DistinctYearMonthsDays = (from t in db.Billings 
           where t.DateTime.HasValue 
           select t.DateTime.Value.Date).Distinct(); 

foreach (var day in DistinctYearMonthsDays) 

ma ottengo (sul foreach):

Il tipo di utente 'Data' specificato non è supportato in LINQ to Entities. Sono supportati solo gli inizializzatori, i membri dell'entità e le proprietà di navigazione dell'entità .

Dopo la ricerca Ho anche provato il seguente senza successo:

IEnumerable<DateTime> DistinctYearMonthsDays = db.Billings 
    .Select(p => new 
     {    
      p.DateTime.Value.Date.Year, 
      p.DateTime.Value.Date.Month, 
      p.DateTime.Value.Date.Day 
     }).Distinct() 
     .ToList() 
     .Select(x => new DateTime(x.Year,x.Month,x.Day)); 

Qualsiasi aiuto sarà molto apprezzato.

+0

Avete dato un'occhiata alla [questa] [1] pagina? [1]: http://stackoverflow.com/questions/5289338/linq-query-distinct-date –

risposta

8

È possibile utilizzare le funzioni Entity incorporate. La query sarebbe diventato:

var DistinctYearMonthsDays = (from t in db.Billings 
           where t.DateTime.HasValue 
           select EntityFunctions.TruncateTime(t.DateTime)).Distinct(); 

Per di più su EntityFunctions, controllare MSDN.

+0

Grazie per la vostra pronta (e buona) risposta Jeff – user1531996

+0

Grazie mille! –

Problemi correlati