一尘不染

多值字典?

c#

任何人都知道a的良好实现MultiValueDictionary吗?基本上,我想要一个允许每个键具有多个值的东西。我希望能够做类似的事情

dict.Add(key, val);

如果该键尚不存在,它将对其进行添加;如果已存在,它将仅对该键添加另一个值。我只是要遍历它,所以我真的不在乎其他检索方法。


阅读 418

收藏
2020-05-19

共1个答案

一尘不染

它不存在,但是您可以从Dictionary and List快速构建一个:

class MultiDict<TKey, TValue>  // no (collection) base class
{
   private Dictionary<TKey, List<TValue>> _data =  new Dictionary<TKey,List<TValue>>();

   public void Add(TKey k, TValue v)
   {
      // can be a optimized a little with TryGetValue, this is for clarity
      if (_data.ContainsKey(k))
         _data[k].Add(v)
      else
        _data.Add(k, new List<TValue>() { v}) ;
   }

   // more members
}
2020-05-19