.NET基类库中是否存在允许使用重复键的字典类?我找到的唯一解决方案是创建,例如,一个类:

Dictionary<string, List<object>>

但实际上用起来很烦人。在Java中,我相信MultiMap可以实现这一点,但在. net中找不到类似的东西。


当前回答

如果你使用的是。net 3.5,使用Lookup类。

编辑:通常使用Enumerable.ToLookup创建Lookup。这确实假设你不需要更改它之后-但我通常发现这已经足够好了。

如果这对你不起作用,我不认为框架中有任何东西可以帮助-使用字典是最好的:(

其他回答

我认为List<KeyValuePair<object object>>可以完成任务。

你可以添加相同的键与不同的情况,如:

key1 Key1 KEY1 KeY1 kEy1 keY1

我知道这是个愚蠢的答案,但对我来说很管用。

你可以定义一个方法来构建复合字符串键 在任何你想要使用字典的地方,你都必须使用这个方法来构建你的键 例如:

private string keyBuilder(int key1, int key2)
{
    return string.Format("{0}/{1}", key1, key2);
}

使用:

myDict.ContainsKey(keyBuilder(key1, key2))

我刚刚遇到了PowerCollections库,其中包括一个名为MultiDictionary的类。它巧妙地包装了这种类型的功能。

如果你正在使用>= .NET 4,那么你可以使用元组类:

// declaration
var list = new List<Tuple<string, List<object>>>();

// to add an item to the list
var item = Tuple<string, List<object>>("key", new List<object>);
list.Add(item);

// to iterate
foreach(var i in list)
{
    Console.WriteLine(i.Item1.ToString());
}