Я сомневаюсь, если вы хотите 2D массив , как это (вы ищете Dictionary<string, int>
?);если вы настаиваете на этом, мы можем превратить массив в более удобную коллекцию:
List<Tuple<string, int>> data = new List<Tuple<string, int>>();
for(int i = 0; i < chem.GetLength(0); ++i)
data.Add(Tuple.Create(chem[i, 0], int.Parse(chem[i, 1])));
Затем отсортировать data
с помощью OrderBy
/ OrderByDescending
и вернуть значения в chem
using System.Linq;
...
int index = 0;
foreach (var tuple in data.OrderByDescending(item => item.Item2)) {
chem[index, 0] = tuple.Item1;
chem[index, 1] = tuple.Item2.ToString();
index += 1;
}
Наконец, давайте извлечем метод:
private static void SortChem(string[,] chem) {
List<Tuple<string, int>> data = new List<Tuple<string, int>>();
for(int i = 0; i < chem.GetLength(0); ++i)
data.Add(Tuple.Create(chem[i, 0], int.Parse(chem[i, 1])));
int index = 0;
foreach (var tuple in data.OrderByDescending(item => item.Item2)) {
chem[index, 0] = tuple.Item1;
chem[index, 1] = tuple.Item2.ToString();
index += 1;
}
}