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)
您可以从字典中过滤项目,然后对值进行求和:
var sum = cars
.Where(item => selectedList.Contains(item.Key))
.Sum(item => item.Value);
Run Code Online (Sandbox Code Playgroud)