Id、CategoryName、および ParentId を持つ自己参照テーブルがあります。それ自体がカテゴリに分割できるカテゴリの階層テーブルの典型的なシナリオであり、DB の専門家は隣接モデルと呼ばれていると言っています。
私が望むのは、Linq to SQL を使用して、それ自体が他のサブカテゴリに関連していないサブカテゴリをクエリすることです。つまり、特定のカテゴリまたはサブカテゴリの直接のリーフ ノードです。
簡単な部分は、サブカテゴリを取得することです。ここにコードを入れるのはほとんど恥ずかしいです。しかし、私たちはコードを見るのが好きです..
IList<Categories> subcategories = context.Where( c => c.ParentId == 1).ToList();
しかし、サブカテゴリのないカテゴリに絞り込むことで、私は好転します。どんな助けでも大歓迎です。
助けてくれてありがとう。ジェフ
更新**これは機能しているように見えますが、誰かがそれが「適切」であることを確認できれば幸いです。したがって、Id = 1 のカテゴリの下にリーフ ノードが必要な場合は、次のようにします。
Categories.Where( c => !c.Children.Any ( d => d.ParentId == c.Id)).Where( e => e.ParentId == 1)
"Children" は、Linq が自己参照関連に付けた名前です。