数据字典中值的排序解决方法
数据字典中值的排序
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
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); } }