Пример кода Шив Кумар ссылается на то, что он не работает - он не компилируется и даже после того, как вы меняете вещи (например, внедряя ген rics во многих местах), он работает, но глючит, так как код вызывает collection.Move, который вызывает в некоторых случаях исключение «Index должно быть в пределах списка». Код ниже работает правильно. Кодеры СТЭ (Entities саморегулирующихся) должны были реализованы, что сами по себе ... Это правильный код:
public static class Extensions
{
public static void Sort<T>(this TrackableCollection<T> collection, Comparison<T> comparison)
{
var comparer = new Comparer<T>(comparison);
List<T> sorted = collection.OrderBy(x=>x, comparer) .ToList();
collection.Clear();
for (int i = 0; i < sorted.Count(); i++)
collection.Add(sorted[i]);
}
}
class Comparer<T> : IComparer<T>
{
private Comparison<T> comparison;
public Comparer(Comparison<T> comparison)
{
this.comparison = comparison;
}
public int Compare(T x, T y)
{
return comparison.Invoke(x, y);
}
}
Вы можете использовать этот код, как и в предыдущем примере:
YourTrackableCollectionName.Sort((x, y) => x.YourFieldName.CompareTo(y.YourFieldName));
Эта ссылка больше не работает. –