LINQ计算2个字典中的值

时间:2016-07-21 00:25:54

标签: c# linq

我有2个收藏品。包含每个jobgrade(Dictionary<string, double>)工资的字典和包含规则的对象列表(List<jobgradeRule>

我想迭代这两个列表并根据规则计算一个值

规则可以有*作为工作等级,这意味着工资字典中的所有工作等级都应该受到影响。

我有这个

    foreach (var item in salariesPerJobGrade)
        foreach (var ritem in attr)
        {
            if (item.JOB_GRADE_CD == ritem.JOB_GRADE_CD || ritem.JOB_GRADE_CD == "*")
                attrAmount += item.Value * ritem.RULE_VALUE;
        }

这可以在LINQ语句中完成吗?

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

ToList

它可以节省您使用@TJF建议的{{1}}调用重新分配字典。

答案 1 :(得分:0)

我没有运行代码,但这应该让你接近:

salariesPerJobGrade.ToList().ForEach(x => attrAmount += attr.Where(y => *check your rule here*).Sum(y => x.Value * y.RULE_VALUE));