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