排序双列表列表

时间:2014-04-20 11:09:09

标签: c# arrays sorting dictionary collections

我有这本词典

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#中不是那么好,我想你会节省很多时间。

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:5)

试试这段代码:

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

答案 2 :(得分:0)

这应该有效:

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

答案 3 :(得分:0)

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

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