2015-09-07 40 views
0

我有字典如果key如果不增加新的元素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); 
} 

我想

国家=美国,英国

+1

实现考虑使用'Lookup'代替'Dictionary' –

+0

@与名单> W.B? –

+0

'Lookup ' –

回答

7

不同类型的所有变量都有点混乱,这将不利于你写代码。我假设你有一个Dictionary<string, List<string>>,其中关键是一种“语言”,价值是该语言的国家或列表。在寻求帮助时,将问题简化为能够再现问题的最小集合非常有用。

反正假设之上,它是如此简单:

  • 尝试获得dictionary["somelanguage"]钥匙插入existingKey
  • 如果它不存在,请将其添加并存储在相同的变量中。
  • List<string>添加到“somelanguage”键下的字典中。

的代码看起来就像这样:

void AddCountries(string languageKey, List<string> coutriesToAdd) 
{ 
    List<string> existingKey = null; 

    if (!dictionary.TryGetValue(languageKey, out existingKey)) 
    { 
     // Create if not exists in dictionary 
     existingKey = dictionary[languageKey] = new List<string>() 
    } 

    existingKey.AddRange(coutriesToAdd); 
} 
+0

谢谢你会检查这个 –

1

假设你正在试图为关键的国家增加值

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 }) 
+2

这包含一个双向查找,它更好地使用'TryGetValue'来代替。 – Caramiriel

+0

同意。编辑代码。 –

+1

字典的值类型是'List '。你的代码不起作用。 – Jens

1

你只需要检查字典或n中是否存在天气值OT,你可以用下面的代码

if (!filters.ContainsKey("country")) 
     filters["country"] = new List<string>(); 

filters["country"].AddRange("your value"); 
+0

它覆盖旧值 –

+0

您需要创建一个逗号分隔值,然后将新值插入到“国家/地区”键 – Ripun

相关问题