2

我有一个收藏

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 集合进行排序吗?我怎样才能做到这一点?

4

2 回答 2

4

我不知道是否有更好的方法,但您可以执行以下操作。这里的想法是创建一个有序列表和有序列表中的第一个 foreach 项目,从内容树中删除并重新添加相关项目。

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

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

或者您可以使用比较;

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);
于 2012-05-29T12:19:04.603 回答
0

你可以使用这个:

ConceptItems = new ObservableCollection<DataConcept>(ConceptItems.OrderBy(i => i.DateColumn));   
于 2018-09-25T07:19:20.493 回答