从Dictionary <string,dictionary <string =“”action =“”>&gt; </string,>中获取3个参数

时间:2013-08-09 15:18:59

标签: c# string dictionary

我有以下代码我需要使用foreach的3个参数:

Dictionary<string, Dictionary<string, Action>>

我尝试使用DictionaryEntryKeyValuePair,但他们继续返回2个值而不是3个。

编辑: 我试图使用一个元组,我试图将它实现到我的代码中,但我无法访问List(元素)中的元组。 代码:

                    foreach (List<Tuple<string, string, Action>> element in Classes)
                    {
                        if (ActualText.StartsWith(element.Item1))
                        {
                            string temp1 = ActualText.TrimStart(element.Item1.ToArray());
                            if (temp1 == element.Item2)
                                element.Item3();
                            else
                                print("Unknown extension " + temp1);
                        }
                    }

7 个答案:

答案 0 :(得分:2)

我认为您正在寻找的是:

Dictionary<string, Dictionary<string, Action>> dict;

foreach (var kvp1 in dict)
{
    foreach (var kvp2 in kvp1.Value)
    {
        string key1 = kvp1.Key;
        string key2 = kvp2.Key;
        Action a = kvp2.Value;
    }
}

答案 1 :(得分:2)

我同意,你应该尝试在这里使用元组。试试这段代码:

 var foo = new Tuple<string, int, int>("bar", 1, 2);

答案 2 :(得分:1)

我觉得你要的是一个元组......?你的问题很模糊,但这就是你如何使用元组。

 var foo = new Tuple<string, int, int, int, int, int, int>(
                       "Bar", 7891957, 7781984, 
                       7894862, 7071639, 7322564, 8008278);

我希望这会有所帮助,但万一它不是你需要的。您可能需要考虑修改您的问题。

答案 3 :(得分:0)

也许你应该探索使用元组? 为什么你会在字典中有一个字典,假设你只在内部字典中有元素?

答案 4 :(得分:0)

我认为(也许)你正在寻找的是这个

假设mainDictionary是你的

Dictionary<string1, Dictionary<string2, Action>>

我们有

foreach(var dictionary in mainDictionary){
    foreach(var item in dictionary.Value){
        //dictionary.Key = string1
        //item.Key = string2
        //item.Value = Action
    }
}

答案 5 :(得分:0)

您可以使用多个值创建字典,例如

Dictionary<string, KeyValuePair<string, string>> Multiple_Value_List = new Dictionary<string, KeyValuePair<string, string>>();

并可以添加值

Multiple_Value_List .Add("Name1", new KeyValuePair<string, string>("category1", "description1"));

Multiple_Value_List .Add(&#34; Name2&#34;,new KeyValuePair(&#34; category2&#34;,&#34; description2&#34;)); Multiple_Value_List .Add(&#34; Name3&#34;,new KeyValuePair(&#34; category3&#34;,&#34; description3&#34;));

答案 6 :(得分:0)

使用元组。这就是为什么。

  1. 您真的想要一个分组项目的清单。这种分组是您需要的关键,因此TUPLE可以提供。

  2. 词典可以执行您要查找的内容,但是由于您必须嵌套数据结构,因此它有点复杂。

这里的目标是为工作使用正确的数据结构,否则您将增加代码的复杂性,从而使调试更加困难,其他人也难以阅读和理解(或您未来的自我) 。

相关问题