Сортировка двумерного List>, по 1-ой строке, чтобы элементы 2-ой строки передвинулись в соответствии с 1-ой - C#
Формулировка задачи:
Дан двумерный массив List<List<string>> , состоящий из двух строк, как его отсортировать по первой строке, чтобы элементы второй строки передвинулись в соответствии с перемещением элементов первой.
|DEVELOPER.@gmail.com|removed@mail.ru|removed@mail.ru|removed@mail.ru|removed@mail.ru|removed@mail.ru|
|removed@mail.ru |removed@mail.ru |removed@mail.ru |removed@mail.ru|removed@mail.ru |removed@mail.ru|
Команда mass[0].Sort(); сортирует только отдельно первую строку
Решение задачи: «Сортировка двумерного List>, по 1-ой строке, чтобы элементы 2-ой строки передвинулись в соответствии с 1-ой»
textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
namespace Sorting
{
class Program
{
static void Main(string[] args)
{
List<List<int>> list = new List<List<int>>()
{
new List<int>
{
1, 2, 4, 5, 3
},
new List<int>
{
1, 2, 3, 4, 5
},
new List<int>
{
5, 4, 3, 2, 1
}
};
var sorted = list.SelectMany((l, i) => l.Select((n, j) => new { num = n, indexer = j, list = i }))
.GroupBy(a => a.indexer)
.OrderBy(o => Tuple.Create(o.ElementAt(0).list, o.ElementAt(0).num))
.SelectMany(a => a)
.GroupBy(a => a.list)
.Select(g => g.Select(n => n.num).ToList())
.ToList();
}
}
}