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
class MyNode { public MyNode Parent; public IEnumerable<MyNode> Elements; public int Group { get; set; } }
Afin de suivre la liste de laflation du groupe, nous pouvons utiliser l'opérateur où:
public static IEnumerable<MyNode> Flatten(this IEnumerable<MyNode> elements) => elements.SelectMany(c => Flatten(c.Elements)).Concat(elements);
Cette solution est efficace et élégamment aplatie, et les nœuds indésirables sont filtrés selon les attributs du groupe.
var flattenedList = treeElements.Flatten().Where(node => node.Group == 1);
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!