说明
必须包含名空间System.Collection.Generic
Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
键必须是唯一的,而值不需要唯一的
键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
通过一个键读取一个值的时间是接近O(1)
键值对之间的偏序可以不定义
使用Linq排序
1、dictionary按值value排序
private void DictonarySort(Dictionary<string, int> dic)
{
var dicSort = from objDic in dic orderby objDic.Value descending select objDic;
如果Value里面是一个对象集合,包含多个对象(或者json数组) var dicSort = from objDic in dic orderby objDic.Value["...(json属性名称)"] descending select objDic;
foreach(KeyValuePair<string, int> kvp in dicSort)
Response.Write(kvp.Key + ":" + kvp.Value + "<br />");
}
排序结果:
index.html:50
online.aspx:22
news.aspx:18
product.html:13
aboutus.html:4
上述代码是按降序(倒序)排列,如果想按升序(顺序)排列,只需要把变量 dicSort 右边的 descending 去掉即可。
2、C# dictionary key 排序
如果要按 Key 排序,只需要把变量 dicSort 右边的 objDic.Value 改为 objDic.Key 即可。
使用方法:
//定义 Dictionary<string, string> openWith = new Dictionary<string, string>();
//添加元素 openWith.Add("txt", "notepad.exe"); openWith.Add("bmp", "paint.exe"); openWith.Add("dib", "paint.exe"); openWith.Add("rtf", "wordpad.exe");
//取值 Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
//更改值 openWith["rtf"] = "winword.exe"; Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
//遍历key foreach (string key in openWith.Keys) { Console.WriteLine("Key = {0}", key); }
//遍历value foreach (string value in openWith.Values) { Console.WriteLine("value = {0}", value); } //遍历value, Second Method Dictionary<string, string>.ValueCollection valueColl = openWith.Values; foreach (string s in valueColl) { Console.WriteLine("Second Method, Value = {0}", s); }
//遍历字典 foreach (KeyValuePair<string, string> kvp in openWith) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); }
//添加存在的元素 try { openWith.Add("txt", "winword.exe"); } catch (ArgumentException) { Console.WriteLine("An element with Key = \"txt\" already exists."); }
//删除元素 openWith.Remove("doc"); if (!openWith.ContainsKey("doc")) { Console.WriteLine("Key \"doc\" is not found."); }
//判断键存在 if (openWith.ContainsKey("bmp")) // True { Console.WriteLine("An element with Key = \"bmp\" exists."); }
参数为其它类型
//参数为其它类型 Dictionary<int, string[]> OtherType = new Dictionary<int, string[]>(); OtherType.Add(1, "1,11,111".Split(‘,‘)); OtherType.Add(2, "2,22,222".Split(‘,‘)); Console.WriteLine(OtherType[1][2]);
参数为自定义类型
首先定义类