У меня есть самоссылающаяся таблица с Id, CategoryName и ParentId. Это типичный сценарий иерархической таблицы категорий, которая сама может быть разделена на категории, которые, как говорят мне эксперты по БД, называется моделью смежности.
Я хочу использовать Linq to SQL для запроса подкатегорий, которые сами по себе не связаны с другими подкатегориями, то есть они являются непосредственными конечными узлами некоторой данной категории или подкатегории.
Легкая часть, которую я получил, это просто получение подкатегорий. Почти стыдно поставить код здесь. Но нам нравится видеть код ..
IList<Categories> subcategories = context.Where( c => c.ParentId == 1).ToList();
Но сужение до категорий без подкатегорий меня заводит. Любая помощь будет высоко ценится.
Спасибо за помощь.
Джефф
UPDATE **
Казалось бы, это работает, но если бы кто-то мог подтвердить, что это "правильно", я был бы благодарен. Итак, если я хочу листовые узлы в категории с Id = 1, я бы сделал это:
Categories.Where( c => !c.Children.Any ( d => d.ParentId == c.Id)).Where( e => e.ParentId == 1)
«Дети» - это имя, которое Линк называет ассоциацией, ссылающейся на себя.