2013-12-19 5 views
2

У меня есть список 2d массивов. Теперь я хочу сортировать мой список * на основе * только 1-й элемент моего массива - не второй элемент. Я написал код следующим образом:Сортировка списка double [,] на основе первого элемента массива

List<double[,]> lsResultsOfEq = new List<double[,]>(); 
double[,] resultOfEqConv; 

for (int i = 0; i < n; i++) 
{ 
    resultOfEq = a*b*c; 

    //add value and index 
    resultOfEqConv = new double[1, 2]; 
    resultOfEqConv[0, 0] = (double)resultOfEq[0, 0]; 
    resultOfEqConv[0, 1] = i; 
    lsResultsOfEq.Add(resultOfEqConv); 
} 

Теперь, когда я использую функцию сортировки, я получаю ошибку «Failed для сравнения двух элементов в массиве» как я должен установить мой список сортировку, что только делать сортировку на основе первого Elemen массива.

ответ

3

Попробуйте использовать OrderBy метод из , для образца:

включают пространство имен:

using System.Linq; 

и попробовать это:

var orderResult = lsResultsOfEq.OrderBy(x => x[0, 0]).ToList(); 
+0

Это не работает, он дает следующее сообщение об ошибке: «двойных [*, *]» не содержит определение для «OrderBy» и не метода расширения «OrderBy» принимающего первый аргумент тип 'double [*, *]' может быть найден (вам не хватает директивы using или ссылки на сборку? –

+0

Извините, я настраиваю свой пример, я имею в виду применение порядка в 'lsResultsOfEq', который является« List », и «Список» может применять порядок. –

2

Прямой вперед путь будет использовать , как заостренный Фелипе Ориани.

На всякий случай вы смотрите на List.Sort() для сортировки на месте. Вы можете попробовать:

lsResultsOfEq.Sort((x, y) => x[0, 0].CompareTo(y[0, 0])); 
Смежные вопросы