У меня есть приведенный ниже код, предназначенный для создания объекта словаря со следующей конструкцией Dictionary<string<Dictionary<string, string>
. По какой-то причине каждый раз, когда я добавляю к нему элемент, текст ключа правильный, но значение (словарь) перезаписывает предыдущее. Вероятно, это лучше объяснить так:
Итерация 1
- ключ1, словарь1
Итерация 2
- ключ1, словарь2
- ключ2, словарь2
Итерация 3
ключ1, словарь3
ключ2, словарь3
- ключ3, словарь3
Что вызывает это и как я могу исправить этот код, чтобы он не перезаписывал словарь в каждой записи?
QueryNameUserQueryString = new Dictionary<string, string>();
DialectDictionary = new Dictionary<string, Dictionary<string, string>>();
while (dataBaseConnection.NextRecord())
{
if (QueryNameUserQueryString != null)
{
QueryNameUserQueryString.Clear();
}
string dialect = dataBaseConnection.GetFieldById (0);
//If no dialect then carry out next iteration
if (String.IsNullOrEmpty (dialect))
{
continue;
}
try
{
dataBaseConnection2.ExecutePureSqlQuery ("SELECT * FROM " + sqlFactoryTable + " WHERE SQL_FACTORY_DIALECT = '" + dialect + "'");
}
catch
{
dataBaseConnection.Close();
dataBaseConnection2.Close();
throw;
}
//Do we have query strings for this dialect?
if (!dataBaseConnection2.HasRows())
{
continue;
}
//loop through query strings
while (dataBaseConnection2.NextRecord())
{
string queryName = dataBaseConnection2.GetFieldById (2);
string queryString = dataBaseConnection2.GetFieldById (3);
string user = dataBaseConnection2.GetFieldById (4);
//create composite key for dictionary
string compositeKey = dialect + "," + queryName + "," + user;
if (QueryNameUserQueryString != null)
{
//Construct our query string dictionary
QueryNameUserQueryString.Add (compositeKey, queryString);
}
}
//If we have a query string dictionary
if (QueryNameUserQueryString != null)
{
//Ensure m_dialect dictionary is not null
if (DialectDictionary != null)
{
//Construct our dictionary entry for this dialect
DialectDictionary.Add (dialect, QueryNameUserQueryString);
}
}
}
}
QueryNameUserQueryString
на каждой итерации. - person J. Steen   schedule 07.08.2012