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

标签 c# .net linq list dictionary

我对 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]);

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

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

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

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

关于c# - 计算通用列表中存在的字典中值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229272/

相关文章:

C# Xpath 只返回第一个元素

C# UDP 服务器异步多客户端 |客户端断开连接时出现 SocketException

.net - 我需要 WPF 4 的 Accordion 控件

c# - 尝试使用 Action.Method arg 运行 DynamicMethod 时出现 VerificationException

c# - 在 LINQ 中使用条件

c# - Img 标签在 Windows Azure 云服务中不显示图像

c# - 如何将从套接字接收到的字节数组转换为 C# 结构

c# - 在另一台机器上运行 Windows 8.1 应用程序

c# - LINQ:获取所有子项总和的有效方法

c# - 删除重复的元素 List<Vector3> Mono/C# - Unity3D