2012-05-29 2 views
2

У меня есть коллекцияСортировать ObservableCollection по дате

private ObservableCollection<ContentItemViewModel> _contentTree; 
     public ObservableCollection<ContentItemViewModel> ContentTree 
     { 
      get { return _contentTree; } 
     } 

класс ContentItemViewModel обладает свойством:

private string _published; 
     public string Published 
     { 
      get 
      { 
       return _published; 
      } 
      set 
      { 
       _published = value; 

       NotifyPropertyChanged("Published"); 
      } 
     } 

, который - node.Published= Convert.ToDateTime(date.Value).ToString("dd MMM yyyy", new DateTimeFormatInfo());

Мне нужно сортировать коллекцию ContentTree по дате? как я могу это сделать?

+0

Должен ли быть обнаружен сортируемый сбор? – Dennis

ответ

3

Я не знаю, есть ли лучший способ, но вы можете сделать следующее. Идея здесь заключается в создании упорядоченного списка и первого элемента foreach в упорядоченном списке, удаления и повторного добавления связанного элемента из дерева данных.

var tempList = _contentTree.OrderBy(p => DateTime.Parse(p.DateAndTime)); 

tempList.ToList().ForEach(q => 
      { 
       _contentTree.Remove(q); 
       _contentTree.Add(q); 
      }); 

Или вы можете использовать Comparison;

Comparison<ContentItemViewModel> comparison = new Comparison<ContentItemViewModel>(
      (p,q) => 
      { 
       DateTime first = DateTime.Parse(p.DateAndTime); 
       DateTime second = DateTime.Parse(q.DateAndTime); 
       if (first == second) 
        return 0; 
       if (first > second) 
        return 1; 
       return -1; 
      }); 


     List<ContentItemViewModel> tempList = _contentTree.ToList(); 
     tempList.Sort(comparison); 
     _contentTree = new ObservableCollection<ContentItemViewModel>(tempList); 
+0

поэтому сначала он должен сортировать по дате от последнего до первого. Если есть какие-то элементы с той же датой, они сортируются по индексу в contentTree collection – revolutionkpi

+0

Тогда вы можете использовать сравнение, просто измените сравнение с тем, как вы хотите. – daryal

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