У меня есть класс расширения, который преобразует коллекцию Observable в список и выполняет заказ. Эта логика работает, но мне она нужна для сортировки альфа-числовых. Например.Сортировка наблюдаемой коллекции Alpha-Numeric
Вместо A1 A10 A2 A3 должен быть A1 A2 A3 A10.
Каков наилучший способ для этого?
<pre>
public static void Sort<T>(this ObservableCollection<T> collection, Comparison<T> comparison)
{
var comparer = new Comparer<T>(comparison);
List<T> sorted = collection.OrderBy(x => x, comparer).ToList();
for (int i = 0; i < sorted.Count(); i++)
collection.Move(collection.IndexOf(sorted[i]), i);
}
internal class Comparer<T> : IComparer<T>
{
private readonly Comparison<T> comparison;
public Comparer(Comparison<T> comparison)
{
this.comparison = comparison;
}
#region IComparer<T> Members
public int Compare(T x, T y)
{
return comparison.Invoke(x, y);
}
}
</pre>
так, чтобы быть явным, вы запрашиваете реализацию сравнения, которая сравнивается буквенно-цифровым способом? –
Правильно, мне нужно, чтобы сравнить буквенно-цифровые символы вместо строкового литерала. –
Любые причины не использовать [сортировка, указанная здесь] (http://www.dotnetperls.com/alphanumeric-sorting)? –