2017-05-26 2 views
-1

文字列["first"、 "second"、 "third" 「第2」、「第3」)。配列の中にあるDictionary.Keyに反復するC#

myArrayを繰り返し実行するのに最適な方法はありますか?各繰り返しは、現在の値をmyDictionaryと比較して、それぞれの要素と一致するかどうかを確認します。

現時点では、反復回数が多すぎるため混乱しています。ここに私のコードスニペットがあります:

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

明らかに問題は反復が多すぎるということです。

+3

どうmyDictionary.ContainsKey 'について'代わりに2番目のループ? – 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

反復回数を減らすために辞書クラスのTryGetValueメソッドを使用してください

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