2017-05-26 60 views
-1

我们假设myArray是一个带有字符串[“first”,“second”,“third”]的数组,并且myDictionaryDictionary<string, object>,其中键为一个字符串[“first” ,“第二”,“第三”]。遍历数组C中的Dictionary.Key#

所以我的问题是,什么将用于遍历myArray是最好的办法,并在每次迭代比较它的当前价值myDictionary的每一个元素,如果匹配,做的东西?

目前我很困惑,因为迭代太多。这里是我的代码片段:

foreach (var value in myArray) 
{ 
    foreach (KeyValuePair<string, object> entry in myDictionary) 
    { 
     if (entry.Key.Contains(value)) 
     { 
      // Do stuff... 
     } 
    } 
} 

显然的问题是,有太多的重复,有什么想法?

+3

什么'myDictionary.ContainsKey '而不是o第二个循环? – Pikoh

回答

0

如何使用LINQ

foreach (KeyValuePair<string, object> entry in myDictionary.Where(x => myArray.Contains(x.Key))) 
{ 
    // Do stuff... 
} 
0
foreach (var value in myArray) 
{ 
    if(myDictionary.Containskey(value) 
    { 
     var entry = myDictionary[value]; 
     //do some 
    } 
} 
1

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(); 
0

。利用Dictionary类的TryGetValue方法,以减少重复

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