有一本字典:
Dictionary<string, string> AuthorList = new Dictionary<string, string>();
AuthorList.Add("aaa", "гистидин");
AuthorList.Add("bbb", "фенилаланин");
AuthorList.Add("aaa", "кокаин");
AuthorList.Add("ccc", "глицин");
AuthorList.Add("ddd", "глицин");
AuthorList.Add("aaa", "атропин");
如何通过键aaa获取所有的值(以列表或数组的形式)?
你需要一个字典,可以为一个键存储几个不同的值。此类字典通常命名为
MultiDictionary.例如,您可以
MultiValueDictionary从 nuget 包中获取 Microsoft 版本Microsoft.Experimental.Collections(小心,它是预发布版!)。包含包(您必须选中包含预发布复选框),您的代码将如下所示:在控制台上
为什么对你不起作用
由于您的是Dictionary < string
AuthorList, string>数据类型,因此它由KeyValuePair对组成,其中键是字符串,值是字符串。因此,当您多次向具有相同键的单元格写入值时,旧的会被简单地擦除(如在常规变量中)。例子:结论:
该怎么办?
如果你想一次为每个键存储多个值,你的选择是List。
在这种情况下,字典将像这样创建:
具体来说, 您的任务可以实现如下:
以后可以通过key访问值列表或特定值,如下:
此外
一般来说,字典是一个KeyValuePair<TKey, TValue> 结构,即键和值都可以是任何数据类型。因此,根据您的愿望和目标,您可以使用两个Queue来获得排队功能,一个HashSet,甚至另一个Dictionary。例如:
所有这些都可以称为具有附加功能的 List,但由于 你没有在你的问题中提到它们,我将停止这个话题
PS
Как мне по ключу aaa получить все значения (в виде списка или массива)?- 用数组实现这一点很困难,因为它的长度不是动态的,所以可能很难初始化或读取......每个键的值都存储在一个 List 中,因此它们可以重复:
结论:
每个键的值都存储在一个 HashSet 中,因此它们将是唯一的:
结论: