treeViewにカスタムクラスコレクション(例:MyClass)をロードしました。チェックされたツリービューアイテムからMyClass[]のコレクションを返し、LINQを使用したい。私は以下を試してみて、それはうまくいきます。しかし、List<>を使用せずに1行のLinqクエリを記述したいと思います。何か助けはありますか?1 Linqクエリ内で再帰を行うことは可能ですか?
List<MyClass> items = new List<MyClass>();
items.AddRange(from node in tvData.Nodes.OfType<TreeNode>().Where((x) => x.Checked)
select node.Tag as MyClass);
tvData.Nodes.OfType<TreeNode>()
.ForEach((x => items.AddRange(from item in x.Nodes.OfType<TreeNode>()
.Where((y) => y.Checked)
select item.Tag as MyClass)));
return items.ToArray();
注:1レベルの深さを持つtreeView。すべての親ノードには、子ノードのセットと1つのレベルのみがあります。