Подтвердить что ты не робот

Как одновременно сортировать 2 списка с помощью LINQ?

У меня есть два списка { 7 3 5 } и {9 8 1}.

Я хочу отсортировать свой первый список, и я хочу, чтобы во втором списке была такая же перестановка индекса, как и в первом списке.

{3 5 7} = > {8 1 9}

Возможно ли это сделать в одном заявлении LINQ?

4b9b3361

Ответ 1

Похоже, что вы захотите:

var list1 = new List<int> { 7, 3, 5 };
var list2 = new List<int> { 9, 8, 1 };

var orderedZip = list1.Zip(list2, (x, y) => new { x, y } )
                      .OrderBy(pair => pair.x)
                      .ToList();
list1 = orderedZip.Select(pair => pair.x).ToList();
list2 = orderedZip.Select(pair => pair.y).ToList();

Ответ 2

Вы можете попробовать использовать метод Zip:

var sortedPairs = list1
    .Zip(list2, (item1, item2) => new KeyValuePair<int, int>(item1, item2))
    .OrderBy(pair => pair.Key);

Затем вы можете получить первый отсортированный список:

var sortedList1 = sortedPairs.Select(pair => pair.Key);

И второй список:

var sortedList2 = sortedPairs.Select(pair => pair.Value);