在字典中添加项时显示错误:已添加具有相同键的项.词典
本文关键字:添加 词典 字典 显示 错误 | 更新日期: 2023-09-27 18:25:28
我正在尝试
Dictionary<int, int> list = new Dictionary<int, int>();
for (int i = 0; i < IDList.Count; i++)
{
list.Add(Convert.ToInt32(Cmd.Parameters["@ReturnVal"].Value.ToString()), IDList[i]);
}
return list;
当我添加一个值两次时,没有错误,但第三次显示错误
已添加具有相同键的项目。字典
有人请告诉我如何解决这个问题。
假设#1:
你把你的字典命名为"list",这表明你并不是在使用字典,而是应该使用List<T>
。
Dictionary要求每个键(Add()
的第一个参数)都是唯一的,但Cmd.Parameters["@ReturnVal"]
看起来可疑地像是SqlCommand
(或其父类之一)的Parameters
属性。如果是这样,它将始终在您显示的代码中返回相同的值。
因此,如果你真的想创建一个元组集合,其中第一个值总是"@ReturnValue",第二个值是IDList[i]
,那么你应该使用List<Tuple<int, int>>
之类的东西。
示例:
List<Tuple<int, int>> list = new List<Tuple<int, int>>();
for (int i = 0; i < IDList.Count; i++)
{
list.Add(
Tuple.Create(Convert.ToInt32(Cmd.Parameters["@ReturnVal"].Value), IDList[i])
);
}
return list;
假设#2:
实际上,IDList[i]
值(同样,顾名思义)是唯一的值,即您的键,而您只是错误地使用了Dictionary<TKey,TValue>.Add()
参数。
添加之前,您必须尝试使用Containsky和filter。
if(!list.ContainsKey(key)
{
list.Add(value,key);
}
Dictionary.Add(…)
按照key
和value
的顺序获取密钥,并希望密钥是唯一的。
如果Cmd.Parameters["@ReturnVal"].Value
的任何结果相同,则您的代码将失败。