字典如果键存在追加如果不添加新元素C#
Dictionary if Key exist append if not add new element C#
我有
Dictionary<String, List<String>> filters = new Dictionary<String, List<String>>();
的值类似于 country = us
。直到现在我可以在不重复密钥时添加它。现在当键 country
重复时。它表明密钥已经存在。
我想要的是如何在同一个键中添加多个值。我做不到。请提出一些建议。
for (int i = 0; i < msgProperty.Value.Count; i++)
{
FilterValue.Add(msgProperty.Value[i].filterValue.Value);
filterColumn = msgProperty.Value[i].filterColumnName.Value;
filters.Add(filterColumn, FilterValue);
}
我想要什么
country = US,UK
你所有变量的不同类型有点混乱,这对你编写代码没有帮助。我假设您有一个 Dictionary<string, List<string>>
,其中键是一种“语言”,值是该语言的国家/地区列表或其他任何内容。在寻求帮助时,将问题减少到可重现问题的最小集合非常有帮助。
无论如何假设以上,就这么简单:
- 尝试将
dictionary["somelanguage"]
密钥输入 existingValue
。
- 如果不存在,则添加并存储在同一个变量中。
- 将
List<string>
添加到“somelanguage”键下的词典中。
代码将如下所示:
private Dictionary<string, List<string>> dictionary;
void AddCountries(string languageKey, List<string> coutriesToAdd)
{
List<string> existingValue = null;
if (!dictionary.TryGetValue(languageKey, out existingValue))
{
// Create if not exists in dictionary
existingValue = dictionary[languageKey] = new List<string>()
}
existingValue.AddRange(coutriesToAdd);
}
假设您正在尝试为主要国家/地区增加价值
List<string> existingValues;
if (filters.TryGetValue(country, out existingValues))
existingValues.Add(value);
else
filters.Add(country, new List<string> { value })
如果你的价值观是List<string>
List<string> existingValues;
if (filters.TryGetValue(country, out existingValues))
existingValues.AddRange(values);
else
filters.Add(country, new List<string> { values })
您只需要检查该值是否存在于字典中,如下所示:
if (!filters.ContainsKey("country"))
filters["country"] = new List<string>();
filters["country"].AddRange("your value");
利用IDictionary界面。
IDictionary dict = new Dictionary<String, List<String>>();
if (!dict.ContainsKey("key"))
dict["key"] = new List<string>();
filters["key"].Add("value");
我有
Dictionary<String, List<String>> filters = new Dictionary<String, List<String>>();
的值类似于 country = us
。直到现在我可以在不重复密钥时添加它。现在当键 country
重复时。它表明密钥已经存在。
我想要的是如何在同一个键中添加多个值。我做不到。请提出一些建议。
for (int i = 0; i < msgProperty.Value.Count; i++)
{
FilterValue.Add(msgProperty.Value[i].filterValue.Value);
filterColumn = msgProperty.Value[i].filterColumnName.Value;
filters.Add(filterColumn, FilterValue);
}
我想要什么
country = US,UK
你所有变量的不同类型有点混乱,这对你编写代码没有帮助。我假设您有一个 Dictionary<string, List<string>>
,其中键是一种“语言”,值是该语言的国家/地区列表或其他任何内容。在寻求帮助时,将问题减少到可重现问题的最小集合非常有帮助。
无论如何假设以上,就这么简单:
- 尝试将
dictionary["somelanguage"]
密钥输入existingValue
。 - 如果不存在,则添加并存储在同一个变量中。
- 将
List<string>
添加到“somelanguage”键下的词典中。
代码将如下所示:
private Dictionary<string, List<string>> dictionary;
void AddCountries(string languageKey, List<string> coutriesToAdd)
{
List<string> existingValue = null;
if (!dictionary.TryGetValue(languageKey, out existingValue))
{
// Create if not exists in dictionary
existingValue = dictionary[languageKey] = new List<string>()
}
existingValue.AddRange(coutriesToAdd);
}
假设您正在尝试为主要国家/地区增加价值
List<string> existingValues;
if (filters.TryGetValue(country, out existingValues))
existingValues.Add(value);
else
filters.Add(country, new List<string> { value })
如果你的价值观是List<string>
List<string> existingValues;
if (filters.TryGetValue(country, out existingValues))
existingValues.AddRange(values);
else
filters.Add(country, new List<string> { values })
您只需要检查该值是否存在于字典中,如下所示:
if (!filters.ContainsKey("country"))
filters["country"] = new List<string>();
filters["country"].AddRange("your value");
利用IDictionary界面。
IDictionary dict = new Dictionary<String, List<String>>();
if (!dict.ContainsKey("key"))
dict["key"] = new List<string>();
filters["key"].Add("value");