首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

数据字典中值的排序解决方法

2012-03-18 
数据字典中值的排序C# codeDictionarystring,int NewLengths new Dictionarystring,int()for (int

数据字典中值的排序

C# code
Dictionary<string,int> NewLengths = new Dictionary<string,int>();            for (int n = 0; n < tableArray.Length - 1; n++)            {                for (int u = 0; u < TableLengths.Count; u++)                {                    if (TableLengths[u].Name == tableArray[n])                    {                        NewLengths.Add(TableLengths[u].Name,TableLengths[u].Length);                    }                }            }

NewLengths的值为:
"aaa",3
"ddd",4
"fff",2
"rrr",1

我现在要将这个数据字典按照value值排序,即为
"rrr",1
"fff",2
"aaa",3
"ddd",4
最后的保存形式可以为数据字典,不行的话为List也行啊,求怎么排序呢




[解决办法]
http://hi.baidu.com/pctonc/blog/item/6db3a2fb4b7e8c8d59ee90db.html
[解决办法]
C# code
            string[] itemList =new string[] { "x=10", "y=5", "k=4", "r=9" };            int flag = 1;            int i, j;            int itemCount = itemList.Length;            string itemTemp;            for (i = 1; i < itemCount && flag == 1; i++)            {                flag = 0;                for (j = 0; j < itemCount - i; j++)                {                    string itemfore = itemList[j];                    int countfore = Convert.ToInt32(itemfore.Substring(itemfore.IndexOf('=') + 1, itemfore.Length - (itemfore.IndexOf('=') + 1)));                    string itemback = itemList[j + 1];                    int countback = Convert.ToInt32(itemback.Substring(itemback.IndexOf('=') + 1, itemback.Length - (itemback.IndexOf('=') + 1)));                    if (countfore < countback)                    {                        flag = 1;                        itemTemp = itemList[j];                        itemList[j] = itemList[j + 1];                        itemList[j + 1] = itemTemp;                    }                }            }            return itemList;        }
[解决办法]
放到List里,用List.Sort排序,效率最高,
[解决办法]
字典无序,现排即可....

NewLengths.OrderBy(o=>o.Value)

如果集合很大,你应该用其他数据结构...
[解决办法]
C# code
class Program    {        static int keySelector(KeyValuePair<string, int> entry)        {            return entry.Value;        }        static void Main()        {            Dictionary<string, int> vals = new Dictionary<string, int>();            vals.Add("asp.net", 3);            vals.Add("vb.net", 2);            vals.Add("html5", 1);            IOrderedEnumerable<KeyValuePair<string, int>> result = vals.OrderBy(keySelector);            foreach (var item in result)                Console.WriteLine("{0}:{1}", item.Key, item.Value);        }    } 

热点排行