linqフラット型のツリー構造を使用し、属性に従ってフィルター
ツリー型データのフィールドでは、階層構造をフラットリストに変換する必要があることがよくあります。親と要素の属性を備えた階層化されたクラスモードがあり、1つのリストにすべてのmyNodeインスタンスを抽出して木を平らにしたいとします。具体的には、グループで1に等しいノードを取得することにのみ興味があります。
次のLinqクエリには解決策があります。
以下は、その作業原則です:
<code class="language-c#">var flatList = rootNodes.SelectMany(node => Flatten(node.Elements)).Concat(rootNodes).Where(node => node.group == 1);</code>
ログイン後にコピー
selectmany(node =&gt; flatten(node.elements)):この方法は、各myNodeの要素コレクションを再帰的に平らにして、すべての子孫のフラットリストを取得しました。 -
concat(rootnodes):子孫のフラットリストを元のmynodesリストに接続します。
- ここで、(node =&gt; node.group == 1):グループ属性1のノードのみを含むフラットリストをフィルタリングします。
- コードの読みやすさを改善するために、平らにするために拡張方法を使用することを検討してください。
次に、ツリー通話拡張方法を使用し、子孫を取得する方法を指定します。
LINQフラットレベルのデータを使用することでもたらされる利点をお楽しみください! 以上がLINQを使用してプロパティでツリー構造を平坦化し、フィルターするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。