计算通用列表中存在的字典中值的总和

use*_*622 3 .net c# linq dictionary list

我对LINQ并不是特别熟练,所以我可以在这个特定场景中使用一些帮助.

我有一个字典项目列表.我需要在字典中对值进行求和,其中键存在于字符串列表中.

我如何为这样的东西编写LINQ表达式?

Dictionary<string, decimal> cars = new Dictionary<string, decimal>();

cars.Add("Ford", 1.2M);
cars.Add("Chevy", 2M);
cars.Add("Toyota", 3M);
cars.Add("Audi", 5M);

List<string> selectedList = new List<string>();
selectedList.Add("Chevy");
selectedList.Add("Audi");
Run Code Online (Sandbox Code Playgroud)

Mak*_*kin 11

就这样:

var sum = selectedList.Sum(s=>cars[s]);
Run Code Online (Sandbox Code Playgroud)

或者,如果您不确定,所有值都在字典中(感谢Tim Schmelter进行更正):

var sum = selectedList.Sum(s=>cars.ContainsKey(s)?cars[s]:0);
Run Code Online (Sandbox Code Playgroud)

编辑: 更好的是蒂姆提出的解决方案:

selectedList.Where(cars.ContainsKey).Sum(s => cars[s])
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 5

您可以从字典中过滤项目,然后对值进行求和:

var sum = cars
    .Where(item => selectedList.Contains(item.Key))
    .Sum(item => item.Value);
Run Code Online (Sandbox Code Playgroud)