Как вывести данные вложенных словарей
public static void OutputForm(Dictionary<string, Dictionary<string, string>> dictForms)
{
foreach (var i in dictForms.Keys)
{
foreach (var j in dictForms.Values)
{
foreach (var k in j)
{
Console.WriteLine(i + " " + k.Key + " " + k.Value);
};
}
}
}
Есть словарь со вложенным словарем. Необходимо перебрать все данные, и вывести их (можно в столбик). Я попробовал вывести через 3 цикла foreach, но уже на втором цикле всё начинает ломаться, и вместо упорядоченных выводов, они начинаю пересекаться между собой
Ответы (1 шт):
Автор решения: Швеев Алексей
→ Ссылка
Зачем тебе 3 цикла foreach? Для каждого ключа первого словаря ты проходишься по каждому значению первого словаря, а потом ещё и по каждому входу второго словаря. У тебя всего 2 уровня вложенности, значит и цикла надо всего 2:
foreach(var a in dict)
{
foreach(var b in a.Value)
{
Console.WriteLine($"{a.Key}, {b.Key}: {b.Value}");
}
}
Да и вообще лучше:
foreach(var a in dict)
{
Console.WriteLine($"{a.Key}: {{{string.Join(", ", a.Value.Select(e => $"{e.Key}: {e.Value}"))}}}");
}