我们假设myArray
是一个包含字符串的数组[" first"," second"," third"]和{ {1}}为myDictionary
,其中键为字符串["第一个","第二个","第三个"]。
所以我的问题是,迭代Dictionary<string, object>
的最佳方法是什么,每次迭代都将它的当前值与myArray
的每个元素进行比较,如果匹配的话做什么?
目前我因为迭代次数太多而感到困惑。这是我的代码段:
myDictionary
显然问题是迭代次数太多,有什么想法吗?
答案 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
}
}