然后在循环中检查不同字典中单词的值

时间:2015-05-14 18:32:54

标签: c# loops dictionary foreach

我有两本词典,我正在查看其中一本词典,并且只有当其他词典中相同键的值超过5时才想进行数学运算。

如何正确制作if语句?

foreach (var word in dict1)
{              
    temp = word.Value;

    // something like this:
    if (temp in dict2 > 5)
    {
        A *= temp;
    }
    else
    {
        // do nothing
    }
}

4 个答案:

答案 0 :(得分:1)

如果您对dict1和dict2使用词典:

foreach(var word in dict1.Where(w=>dict2.ContainsKey(w.Key) && dict2[w.Key]>5))
{
    //dowork
}

这只迭代dict1中dict2中值大于5的项,并且有些工作。

编辑:添加了dict2.ContainsKey(w.Key)检查Where子句,因为dict2可能不包含dict1中的键。

答案 1 :(得分:0)

这样的事情,更好的错误处理,应该这样做。这假定word.key是用于在dict2中查找值的正确密钥。

if (dict2[word.key] > 5)
{
   A *= temp;
}

答案 2 :(得分:0)

正如ASh所说的那样:

if(dict2[word.Key]>5){}

答案 3 :(得分:0)

从已提到的内容中走出一条重要的路线

dict1.Keys
    .Intersect(dict2.Keys)     // We only care about keys in both dictionaries
    .Where(k => dict2[key] > 5)// We only care when the value in dict2 is greater than 5
    .Select(l => dict1[k])     // Get the values from dict1