Ram*_*Ram 22 c# string dictionary key text-files
我有一些文本文件的行,我想添加到Dictionary.I我第一次使用字典.虽然添加起始行它是好的但突然我得到错误:
已添加具有相同键的项目
在我的代码中有重复的密钥,我无法更改.这是我在c#中的代码
Dictionary<string, string> previousLines = new Dictionary<string, string> { };
previousLines.Add(dialedno, line);
Run Code Online (Sandbox Code Playgroud)
dialedno是键,行是文本文件行.这是我从中检索基于密钥的给定行的代码.
string tansferOrginExt = previousLines[dialedno];
Run Code Online (Sandbox Code Playgroud)
所以我关心的是如果可能允许在Dictionary中添加重复键,如果不能,我怎么能获得类似的功能.
Ser*_*kiy 28
如何允许在Dictionary中添加重复键
这不可能.所有键都应该是唯一的.作为Dictionary<TKey, TValue>
实现:
Dictionary<TKey, TValue>
根据字典的相等比较器,a中的每个键必须是唯一的.
可能的解决方案 - 您可以将字符串集合保存为值(即使用Dictionary<string, List<string>>
),或者(更好)您可以使用Lookup<TKey, TValue>
而不是字典.
如何检查重复键并从Dictionary中删除以前的值?
在添加新条目之前检查密钥是否存在:
previousLines[dialedno] = line;
Run Code Online (Sandbox Code Playgroud)
您还可以使用LINQ查询来创建仅包含每个键的最后一个值的字典(假设您具有带有previousLines.ContainsKey(dialedno)
和Dictionary<TKey, TValue>
属性的对象序列):
previousLines[dialedno] = line;
Run Code Online (Sandbox Code Playgroud)
win*_*der 15
我们可以使用键值对列表
List<KeyValuePair<string, string>> myduplicateLovingDictionary= new List<KeyValuePair<string, string>>();
KeyValuePair<string,string> myItem = new KeyValuePair<string,string>(dialedno, line);
myduplicateLovingDictionary.Add(myItem);
Run Code Online (Sandbox Code Playgroud)