如何以递归方式迭代c#中的嵌套字典

时间:2016-10-20 07:49:07

标签: c# algorithm dictionary search recursion

我有字典变量就像:

Dictionary<string,object> dictionary;

这个词典在运行时里面嵌套了词典,如:

Dictionary<string,Dictionary<string,Dictionary<....<Dictionary<string,int>>>

我正在尝试搜索这些嵌套字典中的所有键。它可能是递归的但是我没有处理递归的情况。在字符串比较(string.Contains(&#34; searchText&#34;)完成之后,我将仅保留包含的内容。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以尝试dfs ..下面的代码只打印每个键

    public void NestedDictIteration(Dictionary<string,object> nestedDict)
    {
        foreach (string key in nestedDict.Keys)
        {
            Console.WriteLine(key);
            object nextLevel = nestedDict[key];
            if(nextLevel == null)
            {
                continue;
            }
            NestedDictIteration((Dictionary<string, object>)nextLevel);
        }
    }

答案 1 :(得分:0)

你可以这样做。

Dictionary<string, Dictionary<string, string>> dict= new Dictionary<string, Dictionary<string, string>>();
        var query = from outer in dict
                  from inner in outer.Value
                  select outer.Key + "->>" + inner.Key + ", " + inner.Value;

        foreach (string item in query)
        { 
            //item
        }

或者像这样

foreach (string  key in dict.Keys)
{
    foreach (string innerKey in dict[key].Keys)
    {
        //dict[key][innerKey];
    }
}