실례로 문제를 보려면 www.apoads.com을 방문하여 "Local Businesses"메뉴 항목 위로 마우스를 가져갑니다. DB 호출에서 생성 된 일련의 중첩되지 않은 목록입니다. "Local Businesses"아래에있는 몇 가지 항목을 클릭하면 대부분의 범주가 비어있는 것을 볼 수 있습니다 (사이트는 매우 새 것입니다).LINQ 비어 있지 않은 중첩 메뉴를 생성 할 쿼리?
문제점 : 로컬 비즈니스가 실제로 포함 된 카테고리 만 표시하고자합니다. 나는 무엇을 시도했다
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;
이이 중 하나가 작동하지 않습니다 그래서 나는이 시도했다. 그래서 나는 일종의 역 재귀를 할 필요가있을 것 같은데, 어떻게 할 지 모르겠다.
아니면 아마도 나 자신을 위해 힘든 일을하고 있으며 db 스키마를 변경해야합니까?
이미 LINQ에서 Sql까지의 클래스입니다. 부분 클래스 추가를 통해 Children 속성을 추가 할 수 있다고 가정합니다. 귀하의 솔루션은 실용적으로 보입니다. 어떻게 작동하는지보고 해 드리겠습니다. 고맙습니다! – Chaddeus
그걸 바친 후에 네 말이 맞아. 나는 WAAAAY over-thinking things였습니다. 너무 간단해서 빨리 보았어 야합니다. 고맙습니다! – Chaddeus