2013-08-09 5 views
-4

Я следующий код мне нужно 3 параметра с помощью Еогеасп:Получите 3 параметра из словаря <строка, Dictionary <строка Действие >>

Dictionary<string, Dictionary<string, Action>> 

Я попытался с помощью DictionaryEntry и KeyValuePair но они продолжают возвращать 2 значения вместо 3.

Редактировать: Я пытаюсь использовать Tuple, и я пытаюсь реализовать его в своем коде, но я не могу получить доступ к кортежу внутри элемента List (element). Код:

    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); 
         } 
        } 
+1

Каковы 3 значения, которые вы пытаетесь получить? Более конкретно. – AndrewK

+1

Это своего рода трудный ответ на ваш вопрос. Вы должны больше описать свой контекст. Maybee проблема может быть решена иначе. Пример, который вы указали, - это вложенный словарь. Поэтому каждый строковый словарь содержит новый строковый словарь с Actions. Вам нужно перейти в первый словарь, чтобы получить второй (как дерево) –

+0

Im не уверен, что я понимаю ваш вопрос, но я думаю, вам нужно 2 foreach вложенных для каждого словаря в словаре и по одному для каждой пары ключей, значений. использование одного foreach всегда будет возвращать 2 keyValuePair, которые содержат ключ основного словаря, и словарь, связанный с ним, не будет перебираться во второй словарь –

ответ

1

Я думаю, что вы просите это Кортеж ...? ваш вопрос очень расплывчатый, но вот как вы используете кортеж.

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

Надеюсь, это поможет, но если это не то, что вам нужно. Возможно, вы захотите рассмотреть вопрос о пересмотре своего вопроса.

+0

Ударьте меня! – statue

+0

Имеет ли Tuple ограничение на количество параметров, которые он может удерживать? например, у вас есть 7. –

+0

Предел равен 8. 8-й элемент должен быть другим Tuple ... так что он может продолжаться некоторое время.Однако я бы посоветовал это сделать. – SageMage

0

Возможно, вам следует исследовать, используя кортеж? Почему у вас есть словарь в словаре, если вы используете только элемент во внутреннем словаре?

+0

замечательные мысли думают одинаково;) – SageMage

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; 
    } 
} 
+0

kpv1 не содержит. Значение –

+0

@ DanielJones: Это, безусловно, делает! Это 'KeyValuePair <строка, словарь <строка, действие >>'. «Значение» 'kvp1' является внутренним словарем. Вы обнаружите, что введенный мной код компилируется, если вы присваиваете значение 'dict'. Или вы говорите, что 'Value' является' null'? Если это так, это потому, что вы ничего там не ставили. Но так как я не вижу ваш код, заполняющий словарь, мне сложно понять, что может быть проблемой. –

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 
    } 
} 
+0

Словарь не содержит ничего :( –

+0

@ DanielJones Можете ли вы разместить пример кода того, что вы делаете? –

0

Я согласен, вы должны попробовать использовать Tuple здесь. Попробуйте этот код:

var foo = new Tuple<string, int, int>("bar", 1, 2); 
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 ("Имя2", новый KeyValuePair (» категория2 "," description2 ")); Multiple_Value_List .Add («Name3», новый KeyValuePair («category3», «description3»));

Смежные вопросы