我想知道这样做的最佳/优雅解决方案。基本上我有3组数据。 每个组都在层次结构中的另一个组内。我在字典中使用字典来实现这一目标。示例代码:
Dictionary<string,Dictionary<string,List<string>>> pro = new Dictionary<string,Dictionary<string,List<string>>>();
Dictionary<string,List<string>> part = new Dictionary<string,List<string>>();
List<string> foo = new List<string>();
List<string> bar = new List<string>();
foo.Add("foo1");
foo.Add("foo2");
foo.Add("foo3");
bar.Add("bar1");
bar.Add("bar2");
bar.Add("bar3");
part.Add("Part1", foo);
part.Add("Part2", bar);
pro.Add("First", part);
foreach (var pros in pro)
{
foreach (var parts in pros.Value)
{
foreach (var foos in parts.Value)
{
Console.WriteLine(foos);
}
}
}
我仍然是c#的新手,即使我的代码正常工作,我仍然觉得有更优雅的解决方案。提前谢谢!
答案 0 :(得分:2)
我认为你应该将这种代码重构为简单的Dictionaries包装类。这种方式几乎是不可读的,但是如果你为Parts / Pros创建一个包装类,无论你的名字是什么,你都会看到并阅读代码,并且可以在类中放入一些实用函数,同时隐藏使用Dictionaries的实现细节。 p>
答案 1 :(得分:1)
您可以使用collection initializers作为构造部件,使用LINQ作为打印部件。
Dictionary<string, Dictionary<string,List<string>>> pro = new Dictionary<string, Dictionary<string,List<string>>>()
{
{ "First", new Dictionary<string,List<string>>()
{
{ "Part1", new List<string>() { "foo1", "foo2", "foo3" } },
{ "Part2", new List<string>() { "bar1", "bar2", "bar3" } }
}
}
};
编辑:提供LINQ的新链接,引用stackoverflow上另一个有用的相关帖子。