我有一个列表视图,我必须填充状态作为根节点,城市作为子节点。这是一项繁琐的工作。
我有Dictionary<String,List<String>>
并且这样做。
Dictionary<string, List<String>> locations = new Dictionary<string, List<String>>();
List<String> alabama = new List<String>();
alabama.add("city1");
alabama.add("city2");
alabama.add("city3");
....
locations.add("alabama",alabama);
....
为每个州和城市做这件事都很烦人,我只是无法帮助,但认为有一种更简单的方法。
有什么想法吗?
答案 0 :(得分:1)
使用collection initializer语法和数组而不是列表可以减少击键次数:
var locations = new Dictionary<string, string[]>
{
{ "alabama", new[] { "city1", "city2", "city3", ... } },
...
}
答案 1 :(得分:1)
创建一个包含状态/城市信息的xml文件并阅读它以进行树视图填充会更好。这样你就可以编写两个foreach循环来解析你的xml文件。
您可以将XML文件作为资源嵌入到项目中,这样就不会将其保留在文件系统上,如果您感觉非常幸运,可以使用linq解析它。
Dictionary<string, List<String>> locations = new Dictionary<string, List<String>>();
//read XML into business object here.
foreach(var state in xml.States)
{
List<String> lst = new List<String>();
foreach(var city in state.Cities)
{
lst.add(city);
}
locations.add(state, lst);
}
这样做的好处是你可以在没有代码更改的情况下更新状态列表,只会更改XML文件。根据应用程序的结构,如果有意义,您甚至可以从Web服务中提取此列表。
答案 2 :(得分:0)
var locations = new Dictionary<string, List<string>>{
{ "Alabama", new List<string> {
"City 1", "City 2", "City 3"
} },
{ "Alaska", new List<string> {
"City 14", "City 15"
} }
};