根据数组的第一个元素对double[,]列表进行排序

3

我有一个2D数组的列表。现在我想要根据数组中第一个元素而不是第二个元素,对我的列表进行排序。我编写了以下代码:

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,只根据数组的第一个元素进行排序。

2个回答

4

尝试使用来自OrderBy方法,例如:

包含命名空间:

using System.Linq;

并尝试这个:

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

它不起作用,出现以下错误:'double[,]' 不包含 'OrderBy' 的定义,并且找不到接受类型为 'double[,]' 的第一个参数的扩展方法 'OrderBy'(是否缺少 using 指令或程序集引用?) - farzin parsa
抱歉,我调整了我的示例,我的意思是在 lsResultsOfEq 中应用 order by,它是一个 List<double[,]>,而且 List 可以应用 order by - Felipe Oriani

3

如Felipe Oriani所指出的那样,直接使用可能是一种简单直接的方法。

如果您正在寻找就地排序的List.Sort()方法,您可以尝试以下方法:

lsResultsOfEq.Sort((x, y) => x[0, 0].CompareTo(y[0, 0]));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接