2013-12-19 144 views
2

我有一个2d数组的列表。现在我想排序我的列表 * 根据 *只有第一个元素我的数组 - 不是第二个元素。我写的代码如下:根据数组的第一个元素对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); 
} 

现在,当我使用排序功能我得到“无法在阵列中来比较两个元素”的错误我应该如何设置我的sortlist中,只有以此为基础进行第一次的Elemen排序数组。

回答

3

尝试使用OrderBy方法从,样品:

包括命名空间:

using System.Linq; 

,并尝试这个办法:

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

它不工作,它提供了以下错误: “双[*,*]”不包含“排序依据”的定义,并没有扩展方法“排序依据”接受的第一个参数可以找到类型'double [*,*]'(你是否缺少使用指令或程序集引用? –

+0

对不起,我调整了我的示例,我的意思是在'lsResultsOfEq'中应用顺序,这是'List ',并且'List'可以按顺序应用。 –

2

的直截了当的方法是使用尖的Felipe Oriani出场。

以防万一您正在查看List.Sort()进行就地排序。您可以尝试:

lsResultsOfEq.Sort((x, y) => x[0, 0].CompareTo(y[0, 0])); 
相关问题