0

私は次のデータ構造を持っています

Store
Id
StoreName

Product
Id
Name
StoreId

Category
Id
Name

ProductCategory
Id
ProductId
CategoryId

Deal
Id
Name

DealCategory
Id
DealId
CategoryId

私の要件は、カテゴリを表す文字列のコレクションを取得し、指定されたカテゴリのいずれかに製品または取引がある店舗を照会することです。困っているので誰か助けてください。カテゴリでフィルタリングしないと正しい結果が得られますが、フィルタ ビットが失敗しているように見えます。レコードが返されず、指定されたカテゴリに製品と取引の両方を持つストアが少なくとも 1 つあると確信しています。

これまでのコードは次のとおりです。 where 句を削除すると、正しいデータ、つまりすべてのストア (取引または製品がある?! この差別はまだテストしていません) が得られます。

from s in ctx.Store
join d in ctx.Deals on s.ID equals d.StoreID
join l in ctx.Products on s.ID equals l.StoreID                        
where d.DealCategories.Any(dc => categoriesList.Contains(dc.Category.Name.ToLower()))
group s by s.ID into sg
select new { Store = sg.FirstOrDefault() };
4

0 に答える 0