我有一些来自文本文件的行,我想要添加到Dictionary.I我第一次使用Dictionary。虽然添加起始行是好的但突然我得到错误:
已添加具有相同键的项目
在我的代码中有重复的密钥,我无法更改。这是我在c#中的代码
Dictionary<string, string> previousLines = new Dictionary<string, string> { };
previousLines.Add(dialedno, line);
这里dialedno是键,line是文本文件行。 这是我从中检索给定行的代码。
string tansferOrginExt = previousLines[dialedno];
所以我关心的是如果可能的话允许在Dictionary中添加重复键,如果不能,我怎样才能获得类似的功能。
答案 0 :(得分:28)
如何在Dictionary中添加重复键
这是不可能的。所有键都应该是唯一的。当Dictionary<TKey, TValue>
实施时:
Dictionary<TKey, TValue>
中的每个键都必须是唯一的 字典的平等比较。
可能的解决方案 - 您可以将字符串集合保留为值(即使用Dictionary<string, List<string>>
),或者(更好)您可以使用Lookup<TKey, TValue>
而不是字典。
如何检查重复的密钥并从中删除以前的值 字典?
您可以检查密钥是否与previousLines.ContainsKey(dialedno)
一起存在,但是如果您始终想要保留最后一行,则只需替换该密钥的字典,或者添加新密钥(如果它不在字典中):
previousLines[dialedno] = line;
答案 1 :(得分:14)
我们可以使用键值对列表
itextg
答案 2 :(得分:6)
答案 3 :(得分:0)
示例:
class Program
{
private static List<KeyValuePair<string, int>> d = new List<KeyValuePair<string, int>>();
static void Main(string[] args)
{
d.Add(new KeyValuePair<string, int>("joe", 100));
d.Add(new KeyValuePair<string, int>("joe", 200));
d.Add(new KeyValuePair<string, int>("jim", 100));
var result = d.Where(x => x.Key == "joe");
foreach(var q in result)
Console.WriteLine(q.Value );
Console.ReadLine();
}
}
答案 4 :(得分:0)
List< KeyValuePair < string, string>> listKeyValPair= new List< KeyValuePair< string, string>>();
KeyValuePair< string, string> keyValue= new KeyValuePair< string, string>("KEY1", "VALUE1");
listKeyValPair.Add(keyValue);
答案 5 :(得分:0)
如果您的问题是是否可以两次添加相同的密钥,则答案为否。 但是,如果只想遍历项目,然后增加特定Key的值计数,则可以使用“ TryAdd”方法来实现。
var dict = new Dictionary<int, int>();
foreach (var item in array)
{
dict.TryAdd(item, 0);
dict[item]++;
}
使用这种方法可以实现我们试图实现的目标.``