2015-04-29 10 views
7

Ho il seguente codice:Elenco di date distinte

List<DateTime> dates = new List<DateTime>(); 
//filling the list somehow 
dates = dates.Distinct().ToList(); 

Il codice è fondamentalmente lavorando ma ho l'elenco dei DateTime unico. E voglio ottenere la lista delle date uniche dal momento che non ho bisogno di orari qui. C'è una bella soluzione?

La mia domanda è diversa da

c# Linq select distinct date time days

Dato che non sono quering il database in realtà. Voglio solo filtrare la lista.

+1

https://msdn.microsoft.com/en-us/library/vstudio/bb338049(v=vs.100).aspx Sovraccarico per il salvataggio –

+0

Per quello che posso vedere la domanda è come ottenere la data senza il tempo. quindi potresti usare un '.ToShortDateString();' – maam27

+0

Oppure la proprietà '.Date' per estrarre solo il componente data - come nella risposta al duplicato - e quindi distinguere quelli. – Rup

risposta

22

Come utilizzare una trasformazione SELECT?

Progetti ogni elemento di una sequenza in un nuovo modulo.

Qualcosa di simile

dates = dates.Select(x => x.Date).Distinct().ToList(); 
+0

Con la reputazione di 90k, potresti permetterti di cercare i duplicati prima di rispondere? – Rawling

+2

La soluzione proposta è molto migliore nel mio caso, quindi le risposte dalla domanda che si sta pensando di duplicare – demonplus

2

Sono sicuro che è possibile utilizzare come costruzione:

  List<DateTime> dates = new List<DateTime>(); 
      //filling the list somehow 
      List<DateTime> dates2 = new List<DateTime>(); 
      foreach (var v in dates) { 
       if (!dates2.Contains (v.Date)) { 
        dates2.Add (v.Date); 
       } 
      } 
      dates = dates2; 

ma ci può essere l'opzione migliore per questo.