【问题标题】:Sort on List with KeyValuePair使用 KeyValuePair 对列表进行排序
【发布时间】:2013-11-13 12:34:49
【问题描述】:

我有这个代码:

List<KeyValuePair<String,List<MyObject>>> aux = retEmpty.ToList();
aux.ForEach(x => ret.Add(x.Key, x.Value));

我需要按第一个元素(“字符串”)对“ret”进行排序。我尝试了几个例子,但没有一个有效。有什么帮助吗?

【问题讨论】:

  • 什么ret
  • SortedDictionary&lt;String,List&lt;MyObject&gt;&gt; 怎么样?
  • ret 是“字典>”。很抱歉。
  • 你试过什么?你能更详细地描述一下你想要达到的目标吗?
  • 我需要按字母顺序排序。

标签: c# list key


【解决方案1】:

您是否尝试将第二行替换为:

aux.OrderBy(x=>x.Key).ToList().ForEach(x=>ret.Add(x.Key,x.Value));

?

【讨论】:

  • 这行不通,因为 ret 是一个简单的字典,而 order of elements in a Dictionary is non-deterministic
  • 是的,我在 ret 是字典的 cmets 之前发布了答案。
  • 很公平。我发表评论只是为了澄清以供将来参考。
  • @RicardoNeves 使用此方法时要小心,因为字典以与添加时相同的顺序返回值只是运气。
【解决方案2】:

根据您的评论,您可以简单地使用SortedDictionary

var ret = new SortedDictionary<String,List<MyObject>>();
ret.Add(...

【讨论】:

    【解决方案3】:

    您是否尝试过类似的方法:

    var v = from obj in ret
        orderby obj.Key
        select obj
    

    【讨论】:

      【解决方案4】:

      ret 看起来像字典。如果这个假设是正确的,您可以改用SortedDictionary

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-21
        • 2013-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多