Dans le développement de logiciels, les données tissulaires dans une structure en forme d'arbre sont souvent nécessaires. Une tâche commune consiste à convertir les arbres en listes ou ensembles plates. Cela peut être implémenté à l'aide d'un cadre de requête de linguisme (LINQ) dans le .NET.
En supposant que nous avons la structure d'arbre simple suivante exprimée par la classe MyNode:
Nous obtenons un ienumeration
<code class="language-csharp">class MyNode { public MyNode Parent; public IEnumerable<MyNode> Elements; public int Group { get; set; } }</code>
Afin de suivre la liste de laflation du groupe, nous pouvons utiliser l'opérateur où:
<code class="language-csharp">public static IEnumerable<MyNode> Flatten(this IEnumerable<MyNode> elements) => elements.SelectMany(c => Flatten(c.Elements)).Concat(elements);</code>
Cette solution est efficace et élégamment aplatie, et les nœuds indésirables sont filtrés selon les attributs du groupe.
<code class="language-csharp">var flattenedList = treeElements.Flatten().Where(node => node.Group == 1);</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!