Если массив long , я предлагаю превратить его в Dictionary<string, int>
, поскольку словарь быстрее (Dictionary[...]
имеет O(1)
сложность времени против O(N)
для Array.IndexOf
):
string[] preferedOrder = new[]
{ "AA", "BB", ... }
Dictionary<string, int> map = preferedOrder
.Select((value, index) => new {value, index})
.ToDictionary(item => item.value, item => item.index);
Тогда
return list.OrderBy(item => map[item.Name]);
Или, если item.Name
может быть , абсолютный в map
:
// -1 - abscent values will be on top
return list.OrderBy(item => map.TryGetValue(item.Name, out var v) ? v : -1);