2015-09-07 56 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

相關問題