Dictionary<string, Dictionary<string, string>> matchesLists = new Dictionary<string, Dictionary<string, string>>();
if (matchesLists.ContainsKey("Errors"))
{
var dict = GetInnerTextMatches(webDriver);
dict.Keys.ToList().ForEach(k => matchesLists["Errors"].Add(k, dict[k]));
}
else
matchesLists.Add("Errors", GetInnerTextMatches(webDriver));
GetInnerTextMatches(webDriver)
返回Dictionary<string,string>
是否有更简单的方法将字典添加到匹配列表[“错误”]?
答案 0 :(得分:2)
在.NET 4中,您可以使用ConcurrentDictionary class和方法AddOrUpdate()
,如果是.NET 4,则可以看到this MSDN page
答案 1 :(得分:2)
目前,您正在添加已由其他内容返回的现有字典。我不会这样做 - 它最终导致可能令人困惑的行为。我将这段代码写成:
Dictionary<string, string> errors;
if (!matchesLists.TryGetValue("Errors", out errors))
{
errors = new Dictionary<string, string>();
matchesLists["Errors"] = errors;
}
foreach (var entry in GetInnerTextMatches(webDriver))
{
errors.Add(entry.Key, entry.Value);
}
通过这种方式,您知道GetInnerTextMatches
已实施,但无关紧要 - 您不会干扰它,并且对其返回的字典进行的任何内部更改都会赢得&#39} ;干扰你。