1、通过KeyValuePair<TKey,TValue>类型遍历
var myDictionary= new Dictionary<string, string> { {"a","n" }, {"b","n" }, {"c","n" }, {"d","n" }, {"e","n" }, {"f","n" }, }; foreach (KeyValuePair<string, string> entry in myDictionary) { Console.WriteLine($"key={entry.Key},value={entry.Value}"); }
2、使用var实现遍历
var myDictionary= new Dictionary<string, int> { {"a",11 }, {"b",22 }, {"c",33 }, {"d",44 }, {"e",55 }, {"f",66 }, }; foreach (var kvp in myDictionary) { // key is kvp.Key Console.WriteLine($"{kvp.Key} : {kvp.Value}"); } //仅遍历值 foreach (var item in myDictionary.Values) { Console.WriteLine($"value:{item}"); } //通过key排序后遍历key value foreach (var kvp in myDictionary.OrderBy(kvp => kvp.Key)) { // key is kvp.Key Console.WriteLine($"{kvp.Key} : {kvp.Value}"); } //通过key排序后遍历value foreach (var item in myDictionary.OrderBy(kvp => kvp.Key).Select(kvp => kvp.Value)) { Console.WriteLine($"value:{item}"); }
3、var (key, value)方式将对象解构(deconstruct)成变量实现
从C#7.0开始,可以将对象解构为变量。这是迭代字典的很好的方法。
1) 创建一个KeyValuePair<TKey, TVal>解构它的扩展方法:
public static void Deconstruct<TKey, TVal>(this KeyValuePair<TKey, TVal> pair, out TKey key, out TVal value) { key = pair.Key; value = pair.Value; }
注意:此扩展方法要在非泛型静态中定义。
2) Dictionary<TKey, TVal>以下列方式遍历任何对象
// Dictionary可以是任何类型,只使用'int'和'string'作为例子。 Dictionary<int, string> dict = new Dictionary<int, string>(); // Deconstructor gets called here. foreach (var (key, value) in dict) { Console.WriteLine($"{key} : {value}"); }