2015-04-29 14 views
7

Ich habe den folgenden Code:Liste von verschiedenen Terminen

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

Der Code im Grunde funktioniert aber ich die Liste der einzigartigen Datetime bekommen. Und ich möchte die Liste der einzigartigen Daten bekommen, da ich hier überhaupt keine Zeit brauche. Gibt es eine schöne Lösung?

Meine Frage unterscheidet sich von

c# Linq select distinct date time days

, da ich nicht die Datenbank bin Quering tatsächlich. Ich möchte nur die Liste filtern.

+1

https://msdn.microsoft.com/en-us/library/vstudio/bb338049(v=vs.100).aspx Overloads zur Rettung –

+0

Für was ich die Frage sehen kann, ist, wie man das Datum ohne erhält die Zeit. Dann könnten Sie eine '.ToShortDateString();' – maam27

+0

Oder die '.Date' -Eigenschaft verwenden, um nur die Datumskomponente zu extrahieren - wie in der Antwort auf das Duplikat - und diese dann zu unterscheiden. – Rup

Antwort

22

Wie wäre es mit einer Transformation SELECT?

Projiziert jedes Element einer Sequenz in eine neue Form.

So etwas wie

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

Könnten Sie es sich leisten, mit 90k Reputation nach Duplikaten zu suchen, bevor Sie antworten? – Rawling

+2

Die vorgeschlagene Lösung ist in meinem Fall viel besser als die Antworten aus der Frage, die Sie erwägen, doppelt zu sein – demonplus

2

Ich bin sicher, dass Sie wie folgt gewählt werden können:

  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; 

aber es kann für diese eine bessere Option sein.

Verwandte Themen