从字典中获取除“;foreach”;
本文关键字:foreach 字典 获取 | 更新日期: 2023-09-27 18:26:06
我有:
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>
是否有更简单的方法将dictionary添加到matchesLists["Errors"]?
当前您正在添加到其他东西返回的现有字典中。我不会那样做——它最终会导致潜在的混乱行为。我会这样写代码:
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
是如何实现的,它都无关紧要——你不会干扰它,它返回的对字典的任何内部更改也不会干扰你。
在.NET 4中,如果.NET 4是一个实例,则可以使用ConcurrentDictionary类和方法AddOrUpdate()