J'ai une table auto-référencée avec un ID, un nom de catégorie et un ID parent. C'est un scénario typique d'une table hiérarchique de catégories qui peuvent elles-mêmes être divisées en catégories que les experts DB me disent s'appeler le modèle de contiguïté. Ce que je veux, c'est utiliser Linq to SQL pour rechercher des sous-catégories qui ne sont elles-mêmes liées à aucune autre sous-catégorie, c'est-à-dire qu'elles sont des noeuds-feuilles immédiats d'une catégorie ou sous-catégorie donnée.Utilisation de Linq to Query pour les nœuds terminaux/Leaf dans le modèle hiérarchique/composite
La partie facile, j'ai, qui obtient juste les sous-catégories. Presque gêné de mettre le code ici. Mais nous aimons voir le code ..
IList<Categories> subcategories = context.Where(c => c.ParentId == 1).ToList();
Mais rétrécissant à des catégories sans sous-catégories me tournant autour. Toute aide serait très appréciée.
Merci pour votre aide. Jeff
MISE À JOUR ** Il semblerait que cela fonctionne, mais si quelqu'un pouvait confirmer que c'est "correct", je serais reconnaissant. Donc, si je veux nœuds feuilles dans une catégorie avec Id = 1, je ferais ceci:
Categories.Where(c => !c.Children.Any (d => d.ParentId == c.Id)).Where(e => e.ParentId == 1)
« Enfants » est le nom Linq donne l'association auto-référencement.
Il semblerait que cela fonctionne, mais si quelqu'un pouvait confirmer que c'est "correct", je serais reconnaissant. Donc, si je veux des nœuds feuille sous une catégorie avec Id = 1, je ferais ceci: Catégories.Où (c =>! C.Children.Any (d => d.ParentId == c.Id)). Où (e => e.ParentId == 1) – jlembke