C# 谈Dictionary<TKey,TValue>,SortedDictionary<TKey,TValue>排序

使用过Dictionary的人都知道,当每一个Add里面的值都不会改变其顺序,所以需要需要对其排序的时候就用到SortedDictionary, 但SortedDictionary并不是那么理想,其默认的方式只支持正序排序,想要反序排序时必须得靠自己重新编写代码,下面来看一个简单的例子:

private void TestDictionarySort()
        {
            SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
            sd.Add("321", "fdsgsags");
            sd.Add("acb", "test test");
            sd.Add("1123", "lslgsgl");
            sd.Add("2bcd13", "value");
 
            foreach (KeyValuePair<string, string> item in sd)
            {
                Response.Write("键名:" + item.Key + " 键值:" + item.Value);
            }

        }

上面代码输出效果:

键名:1123 键值:lslgsgl
键名:2bcd13 键值:value
键名:321 键值:fdsgsags
键名:acb 键值:test test

好了,现在我们来看一下反序排序的效果,请看下面的代码:

private void TestDictionarySort()
        {
            SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
            sd.Add("321", "fdsgsags");
            sd.Add("acb", "test test");
            sd.Add("1123", "lslgsgl");
            sd.Add("2bcd13", "value");
 
            Response.Write("<br />正序排序数据:<br />");
            foreach (KeyValuePair<string, string> item in sd)
            {
                Response.Write("键名:" + item.Key + " 键值:" + item.Value + "<br />");
            }

            //重新封装到Dictionary里(PS:因为排序后我们将不在使用排序了,所以就使用Dictionary)
            Dictionary<string, string> dc = new Dictionary<string, string>();
            foreach (KeyValuePair<string, string> item in sd.Reverse())
            {
                dc.Add(item.Key, item.Value);
            }
            sd = null;
            //再看其输出结果:
            Response.Write("<br />反序排序数据:<br />");
            foreach (KeyValuePair<string, string> item in dc)
            {
                Response.Write("键名:" + item.Key + " 键值:" + item.Value + "<br />");
            }


        }

上面代码输出效果:

正序排序数据:
键名:1123 键值:lslgsgl
键名:2bcd13 键值:value
键名:321 键值:fdsgsags
键名:acb 键值:test test

反序排序数据:
键名:acb 键值:test test
键名:321 键值:fdsgsags
键名:2bcd13 键值:value
键名:1123 键值:lslgsgl

原文地址:https://www.cnblogs.com/WZH75171992/p/4553726.html