2010-01-25 5 views
2

J'ai une vue de liste et je dois la peupler d'états comme nœuds racine et de villes comme nœuds enfants. C'est une tâche fastidieuse. J'ai un Dictionary<String,List<String>> et je le fais comme ça.TreeView. États et villes des États-Unis

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); 

.... 

Faire que pour chaque état et la ville devient ennuyeux, et je ne peux pas aider mais pense qu'il ya un moyen plus facile.

Des pensées?

+1

Avez-vous vos données source sous forme lisible par machine? Si c'est le cas, vous pouvez certainement le faire par programmation avec une simple double boucle for- melle ou similaire. – lesscode

Répondre

1

Utilisation de la syntaxe collection initializer et des tableaux au lieu de listes réduit le nombre de frappes un peu:

var locations = new Dictionary<string, string[]> 
{ 
    { "alabama", new[] { "city1", "city2", "city3", ... } }, 
    ... 
} 
+0

Ah, je ne savais pas que tu pouvais le faire comme ça! Merci, ça va faire paraître plus propre au moins. –

+0

@ James Jeffery: Ne pas oublier d'accepter une réponse si elle résout votre problème (cliquez sur la coche à côté de la réponse). Vous avez posé quelques questions mais apparemment aucune réponse ne vous a aidé jusqu'à présent. – dtb

+0

Merci. Je suis nouveau sur Stack Overflow ... mais j'adore :) –

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" 
    } } 
}; 
1

Vous seriez beaucoup mieux de créer un fichier xml avec votre information État/ville et lire à travers cela pour faire votre population arbre vue. De cette façon, vous pouvez écrire deux boucles foreach pour faire votre code en analysant votre fichier xml.

Vous pouvez intégrer le fichier XML en tant que ressource à votre projet afin de ne pas le laisser sur le système de fichiers, et vous pouvez l'analyser en utilisant linq si vous vous sentez vraiment chanceux.

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

Je énorme avantage de le faire de cette façon est que vous pouvez mettre à jour la liste des états sans changement de code, seul un fichier XML va changer. Selon la structure de votre application, vous pouvez même extraire cette liste d'un service Web si cela a du sens.

Questions connexes