除了使用foreach(keyvaluepair)之外,如何遍历Dictionary?

时间:2014-11-11 12:53:50

标签: c#

除了使用

之外,还有其他方法可以遍历所有键和值
foreach (KeyValuePair<T, T> kv in _dic)

3 个答案:

答案 0 :(得分:3)

我真的不知道你为什么要这样做,但是......

var enumerator = _dic.GetEnumerator();

while (enumerator.MoveNext())
{
  var pair = enumerator.Current;
  // ...
}

这当然是foreach在幕后做的事情。

答案 1 :(得分:2)

您可以循环遍历所有键,或将所有值作为独立列表循环:

foreach(var key in _dic.Keys)

foreach(var value in _dic.Values)

我经常使用Keys列表并在循环中引用字典来获取值。

答案 2 :(得分:0)

您可以使用LINQ表达式。

using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main()
        {
            var dict = new Dictionary<string, string>();
            dict.Add("toto","this is toto");
            dict.Add("tata", "this is tata");
            var keys = dict.Where(p => p.Key == "toto"); // LINQ expression is here
            foreach (var key in keys)
            {
                Console.WriteLine(key);
            }
            Console.Read();
        }
    }
}

}