迭代在Array C#里面的Dictionary.Key

时间:2017-05-26 07:50:14

标签: c# arrays dictionary

我们假设myArray是一个包含字符串的数组[" first"," second"," third"]和{ {1}}为myDictionary,其中键为字符串["第一个","第二个","第三个"]。

所以我的问题是,迭代Dictionary<string, object>的最佳方法是什么,每次迭代都将它的当前值与myArray的每个元素进行比较,如果匹配的话做什么?

目前我因为迭代次数太多而感到困惑。这是我的代码段:

myDictionary

显然问题是迭代次数太多,有什么想法吗?

4 个答案:

答案 0 :(得分:1)

使用Linq:

string[] myArray = new string[] { "first", "second", "third" };
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("first", "aaa");

var arrayElementsThatExistAsDictKeys = myArray.Where(element => dict.ContainsKey(element)).ToArray();

答案 1 :(得分:0)

怎么样

foreach (KeyValuePair<string, object> entry in myDictionary.Where(x => myArray.Contains(x.Key)))
{
    // Do stuff...
}

答案 2 :(得分:0)

foreach (var value in myArray)
{
    if(myDictionary.Containskey(value)
    {
         var entry = myDictionary[value];
         //do some 
    }
}

答案 3 :(得分:0)

利用Dictionary类的TryGetValue方法来减少迭代次数

foreach (var aVal in myArray)
{
    object outValue;
    if(myDictionary.TryGetValue(aVal, out outValue))
    {
        // Do your stuff here with outValue
    }
}