Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string[] OrderByCriteria(
- string[] source, // то что сортируем
- string[] criterias) //второй массив с порядком для сортировки
- {
- return source
- .OrderBy(str => GetOrder(str)) //Сортируем по порядку полученному из GetOrder
- .ThenBy(x => x) //Затем сортируем по алфавиту
- .ToArray();
- int GetOrder(string s)
- {
- string criteria = criterias.FirstOrDefault(c => s.StartsWith(c)); //если строка начинается с XXX или ZZZ то этот элемент будет находится в массиве criterias, находим этот префикс
- return criteria == null //если префикс не найден,
- ? int.MaxValue //то возращаем маскимальное число
- : Array.IndexOf(criterias, criteria); // иначе возвращаем индекс этого префикса
- //То есть для zzz вернется 0
- // для xxx вернется 1
- // для остальных int.MaxValue
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement