c#按值排序StringDictionary,NOT key

Rya*_*yan 10 c# generics collections

以Value(而不是Key)的顺序对StringDictionary进行排序(或迭代)的"最佳"方法是什么?

例如Key - Value

  • 1 - X标签
  • 2 - 标签
  • 3 - 其他标签

会给

  • 2 - 标签
  • 3 - 其他标签
  • 1 - X标签

编辑 - 我想说"使用.NET 2.0功能".对不起,我不好......

dcp*_*dcp 14

使用LINQ:

var items = from k in d.Keys
                    orderby d[k] ascending
                    select k;
Run Code Online (Sandbox Code Playgroud)

如果您受限于C#2.0功能,请使用以下命令:

    IDictionary<string, string> d = new Dictionary<string, string>();
    d["1"] = "X label";
    d["2"] = "A label";
    d["3"] = "Other Label";

    List<KeyValuePair<string, string>> myList = new List<KeyValuePair<string, string>>(d);
    myList.Sort(
        delegate(KeyValuePair<string, string> a,
        KeyValuePair<string, string> b)
        {
            return a.Value.CompareTo(b.Value);
        }
    );
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用的是StringDictionary而不是Dictionary,请查看Anthony的解决方案.

  • @Sweko它选择按值排序的键(d [k] = value). (2认同)
  • 是的,'非常好.针对SharePoint 2007和企业的vanilla安装可以以极快的速度移动.看看未死的IE6的诅咒. (2认同)
  • EGADS!我甚至读错了这个问题!我将不得不删除这个问题,所有答案,并销毁所有用户,以便涵盖这个... (2认同)