У меня есть список в моем приложении, которое генерируется в MVVM свете MainViewModel, свойство для него - "Daylist", я также получаю от него _daylist, но я хочу удалить некоторые конкретные элементы списка, которые старше, чем DateTime.Now. скажем так: список дает мне часы, такие как 12:00, 15:00, 18:00, но сейчас 17:00, поэтому я хочу удалить все записи из сгенерированного списка, которые старше, чем DateTime.Now.
Это свойство, которое я использую для получения списка:
/// <summary>
/// Sets and gets the DayList property.
/// Changes to that property value raise the PropertyChanged event.
/// </summary>
public ObservableCollection<List> DayList
{
get
{
return _dayList;
}
set
{
if (_dayList == value)
{
return;
}
RaisePropertyChanging(DayListPropertyName);
_dayList = value;
RaisePropertyChanged(DayListPropertyName);
}
}
Я получаю список из 29 элементов, и каждый элемент имеет DateTime ("Время"), в котором хранятся даты и часы, такие как 21-05-2014 12:00 и т.д. Мне просто нужен способ вернуть список элементов без элементов, которые уже переданы.
Я просто не знаю, как получить доступ к каждому элементу отдельно и проверить, является ли его значение <= DateTime.Now. Есть ли простой способ сделать это из этого свойства, которое я использую?
В то время как тип данных List<T>
предлагает вам однострочный DayList.RemoveAll(x => x.Time < DateTime.Now)
, использование ObservableCollection<T>
требует прохождения списка:
foreach (var item in DayList.Where(x => x.Time < DateTime.Now).ToList())
{
DayList.Remove(item);
}