Пока ваша коллекция IEnumerable
, вы можете вызывать OrderBy
с помощью пользовательского метода сравнения.
Ваш компаратор будет выглядеть так:
class myStringComparer: IComparer<string> {
public int Compare(string a, string b) {
if (a == b) return 0;
if (a == "All" || b == "Others") return -1;
if (a == "Others" || b == "All") return 1;
return int.Parse(a) - int.Parse(b);
}
}
Это, как есть, просто вызовет исключение, если будут обнаружены неожиданные данные (что угодно, кроме «Все», «Другие» или числа). Возможно, вы захотите добавить дополнительную логику перед попыткой целочисленного анализа.
Теперь вы можете позвонить .OrderBy(new myStringComparer())
в свой список / коллекцию. Обратите внимание, что OrderBy
будет доступен только для IEnumerable
объектов (включая все, что вы можете поместить в цикл foreach
, например, массивы, списки и т. Д.).