0

我对 Linq 不是很熟悉,我需要创建一个查询来获取以下数据:

表:

产品
ID、组 ID
、产品代码

特定代码
...

产品组
ID、
状态
...

规则
ID、
GroupId、
ProductCode、
SpecificCode
...

参数
ProductCode:字符串,
SpecificCode:字符串

要求
1.获取所有ProductGroups where Status = Active, which 与至少一个Product 和SpecificCode 参数匹配的Product 相关联。

2.获取与这些组相关的所有规则。

3.过滤掉规则本身没有匹配的Productcode + SpecificCode的规则。

我已经分多个步骤写出来,因为这有助于我理解这个过程。在一个查询中可能有可能 - 我不知道。TBH 我真的不在乎我是否需要多个查询,我只需要它来获得正确的结果集,没有重复(这是我真正苦苦挣扎的地方)。

非常感谢!

4

2 回答 2

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()
        }

像这样的东西应该工作。

于 2012-05-17T17:03:35.920 回答
0

那这个呢?假设您的属性ProductsProductGroupsRules

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();
于 2012-05-17T17:05:02.813 回答