Сортировка List - C#
Формулировка задачи:
Всем привет!
У меня есть строка: c=321&a=123&photo_big=url&b=444&photo=url&x=333&photo_small=123
Я разбиваю ее по & и инициализирую в листе
После чего вызываю MyList.Sort();
Все хорошо сортирует:
a=123
b=444
c=321
photo_big=url
photo_small=123
photo=url
x=333
Но как указать приоритет, так чтобы сортировка была по алфавиту, но знак _ был с низким приоритетом
И после вызова сортировки получаелся такой результат:
a=123
b=444
c=321
photo=url
photo_big=url
photo_small=123
x=333
Сортировка нужна для подписи запроса, который уходит на сервер.
Беда в том, что php сортирует, как мне и нужно (photo_big\small после photo), а c# сортирует не совсем так
Помогите, пожалуйста!
Решение задачи: «Сортировка List»
textual
Листинг программы
- class CustomStringComparer : IComparer<string>
- {
- private readonly IComparer<string> _baseComparer;
- public CustomStringComparer(IComparer<string> baseComparer)
- {
- _baseComparer = baseComparer;
- }
- public int Compare(string x, string y)
- {
- if (_baseComparer.Compare(x, y) == 0)
- return 0;
- int xIndex = x.IndexOf('_');
- int yIndex = y.IndexOf('_');
- // _ в имени, а не в значении
- xIndex = xIndex < x.IndexOf('=') ? xIndex : -1;
- yIndex = yIndex < y.IndexOf('=') ? yIndex : -1;
- if (xIndex >= 0 && yIndex == -1 )
- {
- // выделяем имя переменной до _ из x
- string t = x.Substring(0, xIndex);
- // выделяем полную переменную из y
- string f = y.Substring(0, y.IndexOf('='));
- if( _baseComparer.Compare(f, t) == 0)
- return 1;
- }
- if (yIndex >= 0 && xIndex == -1)
- {
- // выделяем имя переменной до _ из y
- string t = y.Substring(0, yIndex);
- // выделяем полную переменную из x
- string f = x.Substring(0, x.IndexOf('='));
- if( _baseComparer.Compare(f, t) == 0)
- return -1;
- }
- return _baseComparer.Compare(x, y);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д