0

私は Linq にあまり詳しくないので、次のデータを取得するクエリを作成する必要があります。

テーブル:

製品
ID、
GroupId、
ProductCode、
SpecificCode
...

製品グループ
ID、
ステータス
...

ルール
ID、
GroupId、
ProductCode、
SpecificCode
...

パラメータ:
ProductCode:string、
SpecificCode:string

要件: 1.パラメータに一致する ProductCode および SpecificCode を持つ少なくとも 1 つの Product に関連付けられている 、および
のすべての ProductGroups を取得します。Status = Active

2.これらのグループに関連付けられているすべてのルールを取得します。

3. ルール自体に一致する Productcode + SpecificCode がないルールを除外します。

プロセスを理解するのに役立つので、複数のステップに分けて書きました。1つのクエリで可能かもしれません-わかりません。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

これはどうですか?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();
于 2012-05-17T17:05:02.813 に答える