0

これをlinqに変換する方法はありますか?

SELECT DISTINCT PartNumber AS [PartNumber That Includes EVERY ItemNumber Listed in @RequiredItemsTable]
  FROM Part.BillsOfMaterialsFlattened AS bom1 
  WHERE NOT EXISTS
       (SELECT *
          FROM @RequiredItemsTable w
         WHERE NOT EXISTS
               (SELECT *
                  FROM Part.BillsOfMaterialsFlattened AS bom2
                 WHERE (bom1.PartNumber = bom2.PartNumber)
                   AND (bom2.ItemNumber = w.ItemNumber)));

このサイトでいくつかの例を見て、それらをエミュレートしようとしました....しかし、これまでのところ到達していません。

ありがとう!

これは、linq を介して達成しようとしているものの表形式の例です。前述の T-SQL はそのトリックを実行します。

Part.BillsOfMaterialsFlattened
PartNumber  ItemNumber
10041047    10034480
10041047    10041090
10041047    10041091
10041048    10034480
10041048    10041091
10041049    10034650
10041049    10041090
10041049    10041091
10041050    10034650
10041050    10041091
10041061    10001331
10041061    10001422

@RequiredItemsTable
ItemNumber
10041090
10041091

LINQ ステートメントを生成したいIQueryable<String>

PartNumber (Part Numbers that include all Required Item Numbers)
10041047
10041049
4

1 に答える 1

0

次のlinqがトリックを実行します。

var requiredItems = criteria.BomItemsIncluded.AsQueryable();
var partNumbers = (from b in _db.BillsOfMaterialsFlatteneds
                    group b by b.PartNumber into g
                    where requiredItems.All(r => g.Select(_ => _.ItemNumber).Contains(r))
                    select g.Key).Distinct();
于 2013-02-01T19:06:17.497 に答える