复杂的Linq过滤查询

时间:2013-06-24 16:33:42

标签: sql linq

我有以下数据结构

Store
Id
StoreName

Product
Id
Name
StoreId

Category
Id
Name

ProductCategory
Id
ProductId
CategoryId

Deal
Id
Name

DealCategory
Id
DealId
CategoryId

我的要求是获取代表类别的字符串集合,然后查询具有任何给定类别的产品或交易的商店。任何人都可以帮忙,因为我很难过。如果我不按类别过滤但是过滤器位似乎失败了,我得到了正确的结果我没有得到任何记录,我确信至少有一个商店同时具有产品和交易。

到目前为止,这是我的代码,如果我删除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() };

0 个答案:

没有答案