Предположение № 1:
Вы называете свой словарь "список", что говорит о том, что вы не используете словарь для того, для чего он предназначен, и, возможно, вместо него следует использовать List<T>
.
Словарь требует, чтобы каждый ключ (первый параметр Add()
) был уникальным, однако Cmd.Parameters["@ReturnVal"]
выглядит подозрительно, как будто это свойство Parameters
SqlCommand
(или одного из его родительских классов). Если это так, он всегда будет возвращать одно и то же значение в коде, который вы показываете.
Итак, если вы действительно хотите создать коллекцию кортежей, где первое значение всегда равно «@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()
.