2017-05-26 66 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 
    } 
}