2009-03-22 10 views
1

私は、ツリービューからTreeViewItemを取得するためにlinqからオブジェクトへの方法を探しています。linqでツリービュー内の要素を検索するにはどうすればよいですか?

は、私はこのような何かをしたい:

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


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

は、その後、私はこのノードに子を追加します。

ありがとうございました。

答えて

2

FirstOrDefaultを使用して、クエリで作成された列挙から最初に一致する要素を抽出します。それがヌルではないことを確認した後、通常どおりに操作できます。

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

var node = query.FirstOrDefault(); 

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

FirstOrDefaultがTreeViewItemを返すので、キャストはもう必要ありません。

+0

ありがとうございました!テストされ、働いています。 私は 'where句'も変更しなければなりませんでした: ここで、Int32.Parse(childs.Tag.ToString())== rw.PARENT_ID – Jonathan

+0

ViewModelのモデルの汎用クエリベースにすることはできますか?タグの代わりに?実際のオブジェクトだけ –

関連する問題