【问题标题】:How to sort List<List<UInt32>> according to List<UInt32>[0] number ASC/DESC in C#?如何在 C# 中根据 List<UInt32>[0] 编号 ASC/DESC 对 List<List<UInt32>> 进行排序?
【发布时间】:2010-10-18 01:27:13
【问题描述】:

如何按 ASC 顺序排序?

我得到了List&lt;List&lt;UInt32&gt;&gt; 充满了List&lt;UInt32&gt; 的记录,我希望根据每条记录的第一列对这些记录进行排序 - 该列是 UInt32 编号。

所以:

我有以下列表:

new List<UInt32>: 32,1,1,1,1,1
new List<UInt32>: 22,2,2,2,2,2
new List<UInt32>: 32,1,1,1,1,1
new List<UInt32>: 1,1,1,1,1

应该排序到:

List<UInt32>: 1,1,1,1,1
List<UInt32>: 22,2,2,2,2,2
new List<UInt32>: 32,1,1,1,1,1
new List<UInt32>: 32,1,1,1,1,1

-> 只有第一个数字很重要!其他对于排序并不重要。我正在寻找 ASC 的东西,但两者都很棒,所以当我认为应该更改算法时,我会查一下 :)

感谢您的帮助!

@Samuel,谢谢,我会在尝试更改类型时尝试实现它:)

【问题讨论】:

    标签: c# list sorting uint32


    【解决方案1】:

    几乎重复:

    How to sort List<List<string>> according to List<string> number of fields?

    类似:

    var sorted = parent.OrderBy( l => l[0] );
    

    或者:

    parent.Sort( (a,b) => a[0].CompareTo( b[0] ) )
    

    【讨论】:

    • 是的,差不多,但我正在学习这些东西,现在也需要它,所以我真的很抱歉我做了几乎重复的东西,但我不认为这是一个坏主意..谢谢
    • 此错误在“parent.sort”处弹出 -> 应有错误 1 ​​标识符
    • 第一个例子也是这样做的。需要标识符。在 [0]
    • 'l' 后面的点是错误的 - 应该只是 'l[0]' 而不是 'l.[0]'。
    • 糟糕,已修复。我现在觉得很笨。我想这就是我不测试代码的结果。
    【解决方案2】:

    虽然约翰的回答有效,但我建议使用 First() 而不是访问列表中的 0 元素。这样,它适用于任何IEnumerable&lt;T&gt;,而不仅仅是IList&lt;T&gt;

    var sorted = list.OrderBy(subList => subList.First());
    

    【讨论】:

    • 如果您愿意,但两个答案都足够短,如果看起来可以看到。
    • 可能它甚至应该是 FirstOrDefault() 以避免在子项为空的情况下出现异常。
    • 你可以,但是使用 .First() 和一个空的子列表,返回的序列将为空。
    猜你喜欢
    • 2010-10-17
    • 2015-01-02
    • 2017-11-02
    • 2019-07-02
    • 1970-01-01
    • 2016-06-26
    • 2019-12-13
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多