我需要在c#中的后台处理作业中聚合来自API的一些数组值。理论上,API的数量可以是无限的,但可能永远不会超过10个。
API返回一个包含UserID和Value的简单列表。要在我的应用程序中使用数据,我需要将每个不同UserID的所有值相加。
示例 - 来自两个API的数据:
来自API 1:
[1, 240] (Note: The data is organized as [UserID, Value])
[2, 160]
[3, 12568]
[4, 1780]
[...]
来自API 2:
[1, 10]
[2, 10]
[3, 10]
[4, 10]
[...]
期望的结果:
[1, 250]
[2, 170]
[3, 12578]
[4, 1790]
[...]
如何以最有效的方式制作一个所需的列表,其中每个UserID的值已相互添加?
我一直在寻找Matrixes,这似乎是一种方式,但我无法弄清楚如何在不添加UserID的情况下添加值?
(我意识到它可以通过一些嵌套循环来解决,但我正在寻找更好的方法);
注意:UserID不是顺序的。
答案 0 :(得分:1)
使用Dictionary<int,int>
可能比以任何其他方式烹饪的任何内容都快,即使查找UserId是否已作为密钥包含在内。
即:
var results = Dictionary<int,int>();
foreach (var api in apis)
foreach(var value in api.GetValues())
if (!result.HasKey(value.UserID))
result[value.UserId] = value.Value;
else
result[value.UserId] += value.Value;