Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有一个与哈希表或NameValueCollection等价的泛型,该泛型允许使用同一个键的多个值?_C#_.net - Fatal编程技术网

C# 是否有一个与哈希表或NameValueCollection等价的泛型,该泛型允许使用同一个键的多个值?

C# 是否有一个与哈希表或NameValueCollection等价的泛型,该泛型允许使用同一个键的多个值?,c#,.net,C#,.net,我找到了NameValueCollection,但它只支持键的字符串和值的字符串。我需要一些通用的,可以使用长整数键和我自己的对象作为值。我可以使用一个哈希表,该哈希表包含每个键的列表,从而实现我自己的滚动。我更希望库代码健壮且可能更高效。当然!您可以这样做: var dict = new Dictionary<long, List<MyType>>(); 您可以使用多值字典NuGet:: 具有相同唯一标识符的多个对象意味着什么?当你要钥匙时,如果有多个对象使用钥匙,你

我找到了NameValueCollection,但它只支持键的字符串和值的字符串。我需要一些通用的,可以使用长整数键和我自己的对象作为值。我可以使用一个哈希表,该哈希表包含每个键的列表,从而实现我自己的滚动。我更希望库代码健壮且可能更高效。

当然!您可以这样做:

var dict = new Dictionary<long, List<MyType>>();
您可以使用多值字典NuGet::


具有相同唯一标识符的多个对象意味着什么?当你要钥匙时,如果有多个对象使用钥匙,你希望得到什么?为什么不直接使用字典呢?如果您只需要从现有数据填充它,那么这里有一个简单的方法:ToLookup这样做;没有添加等等乔,我希望能得到一个列表。例如,我有一个零售商店的列表,我希望能够尽可能快地搜索所有商店的特定零售连锁ID。然后,我需要在员工数据中查找给定商店ID的所有员工。我希望对内容进行哈希处理,以避免在比较链ID或商店ID时编写代码循环遍历整个列表。“我从来没有在我的问题中使用过独特这个词。”克里特纳说得没错。这是每个键的值列表。啊,我错了!:我将这本词典包装在一个自己的类中,以便使用自定义函数简化添加、删除等过程?例如,使用普通字典@Camilo的缺点是,在列表的每一个添加项上,都需要检查是否需要更新列表。多词典将其抽象化,因此您无需考虑它。话虽如此,您的想法肯定会奏效。@mjwills我宁愿在我自己的代码中抽象出这些逻辑,这些逻辑依赖于库的实现,但这只是我的想法:
dict[key] = new List<MyType>(valuesEnumerable);
dict[key].Add(value);
var multiValueDictionary = new MultiValueDictionary<string, int>();
multiValueDictionary.Add("key", 1);
multiValueDictionary.Add("key", 2);
//multiValueDictionary.Count == 1
//multiValueDictionary.Values contains elements [[1,2]]