2015-04-29 2 views
7

У меня есть следующий код:Список различных дат

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

Код в основном работает, но я получаю список уникальных DateTime. И я хочу получить список уникальных дат, так как мне здесь не нужны времена. Есть ли хорошее решение?

Мой вопрос отличается от

c# Linq select distinct date time days

, так как я не quering базы данных на самом деле. Я просто хочу отфильтровать список.

+1

https://msdn.microsoft.com/en-us/library/vstudio/bb338049(v=vs.100).aspx Перегрузки на помощь –

+0

Для чего я вижу вопрос, как получить дату без время. то вы можете использовать '.ToShortDateString();' – maam27

+0

Или свойство '.Date' для извлечения только компонента даты - как в ответе на дубликат, - и затем отличные от него. – Rup

ответ

22

Как об использовании преобразования SELECT?

Проекты каждого элемента последовательности в новую форму.

Что-то вроде

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

Имея репутацию 90k, вы можете позволить себе искать дубликаты перед ответом? – Rawling

+2

Предлагаемое решение намного лучше в моем случае, тогда ответы на вопрос, который вы рассматриваете как дубликат – demonplus

2

Я уверен, что вы можете использовать конструкцию типа:

  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; 

но может быть лучшим вариантом для этого.

Смежные вопросы