C#初始化一个字典,然后再添加到其中

本文关键字:然后 添加 字典 初始化 一个 | 更新日期: 2023-09-27 18:20:04

我有一个字典,它将根据查询结果填充。因此,当我初始化字典时,我不知道哪些数据值将进入字典(尽管显然我知道将使用哪些数据类型)。我是C#的新手,如何设置?

在伪代码中,我想要的字典结构是:

{
    "visa": [2.75, 3.33],
    "mastercard": [1.00, 4.32],
    ...
}

这是我到目前为止所拥有的,但它还没有编译:

//initialize the dictionary but do not populate yet
Dictionary<string, List<decimal>> cardtype_total_amount;
//simulate getting the first card type from the db
string cardtype = "visa";
//initialize the "visa" key
if (!cardtype_total_amount.ContainsKey(cardtype)) cardtype_total_amount.Add(cardtype, new List<decimal>(){0, 0});
//simulate updating the values for "visa" from the db (this would happen lots of times for each card type):
cardtype_total_amount[cardtype][0] += 0.5;
cardtype_total_amount[cardtype][1] += 1.7;
//add more keys for other cardtypes, and update their totals as per above...

C#初始化一个字典,然后再添加到其中

我认为您只是缺少了一个初始化!

//initialize the dictionary but do not populate yet
Dictionary<string, List<decimal>> cardtype_total_amount = new Dictionary<string, List<decimal>>();

[编辑]哦,你需要在下面的小数上加一些m,否则它们就是双倍的:

cardtype_total_amount[cardtype][0] += 0.5m;

不确定这是否是你想要的。怎么样?

Dictionary<string, List<decimal> array
  = new Dictionary<string, List<decimal>>();

然后,对于每个读入(由一个键和值组成),您可以执行以下操作。

var addition = new { Key = "visa", Value = 3.14 };
array[addition.Key].Add(addition.Value);

请注意,我不在电脑前,所以我可能打字有点错。此外,这在一定程度上取决于您如何接收后续值。这里假设一次一个。若你们得到一个完整的列表,你们可以把它分解成字典本身。

List<Piece> bunchOfValues = ...;
Dictionary<...> results = bunchOfValues.ToDictionary(key => key.NameOrType,
  value => bunchOfValues.Where(...).Select(...));

最后,当你想总结所有内容时,你可以再次使用LINQ。

decimal sum = arrayOfValues.Sum(element => element);
相关文章: