2009-03-22 4 views
1

Je suis à la recherche d'un moyen linq-to-objects pour obtenir un TreeViewItem d'un treeView.Comment puis-je rechercher un élément dans une arborescence avec linq?

Je veux faire quelque chose comme ceci:

var node = 
      from TreeViewItem childs in tree.Items 
      where ((int) childs.Tag) == 1000 
      select childs; 


string tag = ((TreeViewItem)node).Tag.ToString(); 

Ensuite, je veux ajouter les enfants à ce noeud.

Merci.

Répondre

2

Vous devez utiliser FirstOrDefault pour extraire le premier élément correspondant de l'énumération créée par la requête. Après avoir vérifié que ce n'est pas nul, vous pouvez alors opérer comme vous le feriez normalement.

var query = 
     from TreeViewItem childs in tree.Items 
     where ((int) childs.Tag) == 1000 
     select childs; 

var node = query.FirstOrDefault(); 

if (node != null) 
{ 
    ... 
} 

Notez que vous n'aurez plus besoin de la conversion car FirstOrDefault retournera un TreeViewItem.

+0

Merci beaucoup! Testé et fonctionnel. Je devais aussi changer la 'clause where': où Int32.Parse (childs.Tag.ToString()) == rw.PARENT_ID – Jonathan

+0

Pouvez-vous en faire une base de requête générique sur le modèle du ViewModel? au lieu de Tag? Juste l'objet réel –

Questions connexes