Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.33 KB | None | 0 0
  1. string[] OrderByCriteria(
  2.             string[] source,  // то что сортируем
  3.             string[] criterias) //второй массив с порядком для сортировки
  4.         {
  5.             return source
  6.                 .OrderBy(str => GetOrder(str)) //Сортируем по порядку полученному из GetOrder
  7.                 .ThenBy(x => x)                //Затем сортируем по алфавиту
  8.                 .ToArray();
  9.  
  10.  
  11.             int GetOrder(string s)
  12.             {
  13.                 string criteria = criterias.FirstOrDefault(c => s.StartsWith(c)); //если строка начинается с XXX или ZZZ то этот элемент будет находится в массиве criterias, находим этот префикс
  14.                 return criteria == null //если префикс не найден,
  15.                     ? int.MaxValue //то возращаем маскимальное число
  16.                     : Array.IndexOf(criterias, criteria); // иначе возвращаем индекс этого префикса
  17.  
  18.                 //То есть для zzz вернется 0
  19.                 //        для xxx вернется 1
  20.                 //        для остальных int.MaxValue
  21.             }
  22.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement