我不是特别精通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");

最佳答案

就是这样:

var sum = selectedList.Sum(s=>cars[s]);


或者,如果不确定,则所有值都在字典中(感谢蒂姆·施密特修正):

var sum = selectedList.Sum(s=>cars.ContainsKey(s)?cars[s]:0);


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

selectedList.Where(cars.ContainsKey).Sum(s => cars[s])

10-08 08:35