是否有更优化的方法来进行以下操作-
int interactionScore = 0;
foreach (var completionResult in needs.Keys.Intersect(results.Keys))
{
interactionScore -= results[completionResult] * needs[completionResult];
}
需求和结果都是很小的字典(每个字典大约2-10个条目),但是我运行此循环的次数非常多,并且损害了我的表现,所以我想知道是否有一种更有效的方法来实现结果相似(仅将两个词典中都存在的条目相乘)。
答案 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;
}
}