【问题标题】:Sort a list of double[,] based on first element of array根据数组的第一个元素对 double[,] 列表进行排序
【发布时间】:2013-12-19 01:50:23
【问题描述】:

我有一个二维数组列表。现在我想排序我的列表 *基于* 仅第一个元素 我的数组 - 而不是第二个元素。我写的代码如下:

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);
}  

现在,当我使用排序函数时,我收到错误“无法比较数组中的两个元素”我应该如何设置我的排序列表,它只根据数组的第一个元素进行排序。

【问题讨论】:

    标签: c# arrays list sorting


    【解决方案1】:

    尝试使用 中的OrderBy 方法,作为示例:

    包括命名空间:

    using System.Linq;
    

    试试这个:

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

    【讨论】:

    • 它不起作用,它给出以下错误:'double[,]' 不包含'OrderBy' 的定义,并且没有扩展方法'OrderBy' 接受第一个参数可以找到“double[,]”类型的(您是否缺少 using 指令或程序集引用?
    • 对不起,我调整了我的样本,我的意思是在lsResultsOfEq 中申请订单,这是一个List&lt;double[,]&gt;List 可以申请订单。
    【解决方案2】:

    Felipe Oriani 指出,直接的方法是使用

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 2021-12-14
      相关资源
      最近更新 更多