Чтобы увидеть мою проблему в действии, посетите www.apoads.com и наведите курсор на пункт меню «Местные предприятия». Это серия вложенных неупорядоченных списков, сгенерированных из вызова db. Идите дальше и нажмите на несколько пунктов под «Местные предприятия», и вы увидите, что большинство категорий пустые (сайт очень новый).
Проблема:
Я только хочу показать категории, которые на самом деле содержат местный бизнес. Вот как выглядит моя схема категории:
int BizCatID - PK,Identity (used in FK relation to the table named Biz)
int? ParentID - BizCatID of this rows parentID, null means no parent
nvarchar Name - name of the category
nvarchar Caption - quick description of the category
Что я пробовал:
Я пытался обновить мой запрос LINQ так:
from c in db.BizCategories where c.ParentID != null && c.Bizs.Count() > 0 select c;
Это, очевидно, не сработает, потому что мне нужно, чтобы родительская категория показывала, содержит ли дочерняя категория бизнес. Итак, я попробовал это:
from c in db.BizCategories where c.Bizs.Count() > 0 select c;
Это также не работает, поскольку родительские категории никогда не будут иметь под ними никаких предприятий. Похоже, мне нужно выполнить какую-то обратную рекурсию, но я не уверен, как это сделать.
Или, может быть, я все усложняю для себя и мне нужно изменить свои схемы БД?