【发布时间】:2015-10-15 06:14:26
【问题描述】:
我有一个具有“DisplayOrder”属性的项目列表。这可以具有 NULL 或 int 值。如果它具有 int 值,则它具有优先级,并且应该在 Observable Collection 的第一组中。第一组中的项目也按 DisplayOrder 排序。
如果为NULL,则属于第二组,按字母排序。
然后将第一组和第二组组合为我绑定到 ListView 的 Main Items Collection Observable Collection。
这是我当前的代码,但我担心是否有更优化的方法。
var MainItemCollection = new ObservableCollection<MainItemViewModel>();
var ItemsWithProperty = new ObservableCollection<MainItemViewModel>();
var ItemsWithNullProperty = new ObservableCollection<MainItemViewModel>();
foreach (var item in DataObject.MainItems)
{
if (item.DisplayOrder == null)
ItemsWithNullProperty.Add(new MainItemViewModel(item));
else
ItemsWithProperty.Add(new MainItemViewModel(item));
}
ItemsWithProperty = new ObservableCollection<MainItemViewModel>(ItemsWithProperty.OrderBy(c => c.DisplayOrder));
ItemsWithNullProperty = new ObservableCollection<MainItemViewModel>(ItemsWithNullProperty.OrderBy(c => c.Title));
//Add those with priorities first sorted by DisplayOrder 1,2,3,4
foreach (var c in ItemsWithProperty)
{
MainItemCollection.Add(c);
}
//Add those without priority sorted Alphabetically
foreach (var c in ItemsWithNullProperty)
{
MainItemCollection.Add(c);
}
谢谢!
【问题讨论】:
标签: c# sorting observablecollection