A Simple C# Sorted Observable Collection
I know that this can be done with ICollectionView without modifying the underlying order, but for times when I really must have my bound collection sorted, I use this:
/// <summary> /// A Sorted ObservableCollection. /// - Sorts on Insert. /// - Requires that T implements IComparable. /// </summary> /// <typeparam name="T">The type held within collection</typeparam> public class SortedObservableCollection<T> : ObservableCollection<T> where T : IComparable { protected override void InsertItem(int index, T item) { for (var i = 0; i < Count; i++) { switch (Math.Sign(this[i].CompareTo(item))) { case 0: case 1: base.InsertItem(i, item); return; case -1: break; } } base.InsertItem(Count, item); } }
It sorts on insert and is O(n) so be careful with large collections.