从字典中获取除“;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"]?

从字典中获取除“;foreach”;

当前您正在添加到其他东西返回的现有字典中。我不会那样做——它最终会导致潜在的混乱行为。我会这样写代码:

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()