带有重复键和值的.NET集合?

时间:2011-09-19 07:54:52

标签: c# .net

我正在寻找支持重复键和值的字典类型.NET集合,类似这样的

Collection c = new Collection();
c["Key"] = "value";
c["Key"] = "value";
c["Key1"] = "value1";

词典不允许使用相同的键

7 个答案:

答案 0 :(得分:9)

我建议使用课程Lookup<TKey,TElement>。它就像一个允许重复键的字典。

答案 1 :(得分:3)

您可以使用包含列表的字典:

Dictionary<string, List<string>> MyValues;

答案 2 :(得分:2)

如果在C ++中需要类似multimap的东西,那么在.NET中没有直接的等价物。但您可以通过将集合作为值放入Dictionary of TKey, TValue

来模拟这一点
Dictionary<string, List<string>> c = new Dictionary<string, List<string>>();
c["Key"] = new List<string>();
c["Key"].Add("value");
c["Key"].Add("value2");

c["Key2"] = new List<string>();
c["Key2"].Add("Value1");

另一种方法 - 创建自己的集合,将“隐藏”一些辅助方法中的所有不执行操作。例如,您的索引器可以检查您的哈希表中是否已经有apporpriate键并在其中创建空列表。

答案 3 :(得分:1)

你正在寻找一个字典

答案 4 :(得分:0)

答案 5 :(得分:0)

只是一个猜测,但为什么不使用字典但是将值设为List?

Dictionary<string, List<string>> c = new Dictionary<string, List<string>>();
c["Key"] = new List<string>();
c["Key1"] = new List<string>();
c["Key"].Add("value");
c["Key"].Add("value");
c["Key1"].Add("value1");

答案 6 :(得分:0)

multimap就足够了。