【问题标题】:Sort list of double array双数组的排序列表
【发布时间】:2014-06-04 13:40:47
【问题描述】:

我有这本词典

Dictionary<string, List<double[]>> dictionary = new Dictionary<string, List<double[]>>();

我填了很多数据。

列表中的每个数组都有两个值,如下所示:

[xvalue, yvalue]

无论如何,我可以根据数组的xvalue 对字典中的每个列表进行排序。

例如

这是列表

[[1,100], [10, 100], ....[3, 100]]

排序后应该是这样的

[[1,100], [3,100], [10,100]]

说实话,我所做的只是在谷歌上搜索这样一个功能,但我不能做更多的事情,因为我的 c# 不太好,我认为问你会节省很多时间。

【问题讨论】:

  • 如果你的数组总是有两个元素,你真的应该选择Tuple&lt;double, double&gt;(或你自己的类型)而不是数组。
  • 如果你选择那个选项,你甚至可能更喜欢通过在List 中按顺序存储元组的第一个和第二个元素来制作List 一维。因此例如 [1,5][2,8][3,4] 将变为 [1,5,2,8,3,4]。

标签: c# arrays sorting dictionary collections


【解决方案1】:

遍历字典的所有元素并对每个列表进行排序。您可以使用适当的比较函数调用List.Sort 对列表进行排序。

foreach(var entry in dictionary) {
    entry.Value.Sort((a, b) => a[0].CompareTo(b[0]));
}

【讨论】:

  • 感谢您的回答,但也许您做错了什么?我在你的答案的a,b 部分得到了can't convert lamda expression to doubt[]
  • @MarcoDinatsoli:请再试一次。我修复了一些错误并缩短了它。
  • 看来你是第一个回答我的人 :) 谢谢会接受
【解决方案2】:

试试这个代码:

foreach (var pair in dictionary) 
{
    pair.Value.Sort((x, y) => x[0].CompareTo(y[0]));
}

【讨论】:

  • 你太棒了。多谢。有用。 +1。一旦系统允许就会接受
  • @Marco Dinatsoli,谢谢,但考虑接受 Danvil 的回答。他是第一个:)
  • @2kay 好的,会这样做的
【解决方案3】:

这应该可行:

dictionary = dictionary
             .ToDictionary(x => x.Key, 
                           x => x.Value.OrderBy(a => a[0]).ToList());

【讨论】:

    【解决方案4】:

    简单的方法是遍历键。访问特定键下的每个列表。对每个列表进行排序,并将未排序的列表替换为新排序的列表:

    foreach (var key in dictionary.Keys)
    {
        dictionary[key] = dictionary[key].OrderBy(i => i[0]).ToList();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 2011-07-16
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多