将两个字典相乘

时间:2020-06-04 20:01:20

标签: c# performance dictionary

是否有更优化的方法来进行以下操作-

int interactionScore = 0;

        foreach (var completionResult in needs.Keys.Intersect(results.Keys))
        {
            interactionScore -= results[completionResult] * needs[completionResult];
        }

需求和结果都是很小的字典(每个字典大约2-10个条目),但是我运行此循环的次数非常多,并且损害了我的表现,所以我想知道是否有一种更有效的方法来实现结果相似(仅将两个词典中都存在的条目相乘)。

1 个答案:

答案 0 :(得分:6)

避免使用Intersect

int interactionScore = 0;
foreach (var key in needs.Keys)
{
  if (results.TryGetValue(key, out int result))
  {
    int need = needs[key];
    interactionScore -= result * need;
  }
}