我对Linq并不熟悉,我需要创建一个查询来获取以下数据:
表格:
产品
ID,
GroupId的,
产品代码,
SpecificCode
...
ProductGroup
ID,
状态
...
规则
ID,
GroupId的,
产品代码,
SpecificCode
...
参数:
产品代码:字符串,
SpecificCode:字符串
要求:
1.获取Status = Active
所有的ProductGroups,以及与至少一个ProductCode和SpecificCode匹配参数的Product相关联的产品组。
2.获取与这些组相关联的所有规则。
3.在规则本身上筛选出没有匹配的Productcode + SpecificCode的规则。
我已经分多步编写了它,因为这有助于我理解这个过程。它可能在一个查询中 - 我不知道。 TBH我真的不在乎我是否需要多个查询,我只需要它来获得正确的结果集,没有重复(这是我真正在努力的地方)。
非常感谢!
答案 0 :(得分:0)
from pg in ProductGroup
where pg.status == "active"
select new
{
ProductGroup = pg,
Products = (from p in Product
&& p.GroupId = pg.Id
&& p.productcode == inputproductcode
&& p.specificcode == inputspcode).ToList(),
Rules = pg.Rules.Where(r=>r..productcode == inputproductcode && r.specificcode == inputspcode).ToList()
}
这样的事情应该有效。
答案 1 :(得分:0)
这个怎么样?假设您的媒体资源为Products
,ProductGroups
和Rules
:
var productGroups = (from p in Products
join pg in ProductGroups on p.GroupId equals pg.Id
where pg.Status = "Active"
select new
{
p.ProductCode,
p.SpecificCode,
Rules = Rules.Where(r => r.ProductCode == p.ProductCode
&& r.SpecificCode == p.SpecificCode).ToList()
})
.ToList();