複数の条件を使用して左結合を使用して LINQ でテーブルをリンクすることに関する他の質問を熟読し、関連する例と思われるものを試しましたが、必要な結果を得るために C# LINQ コードを作成できません。
私は2つのテーブルを持っています。1 つ目は ProductionOptions で、2 つ目は ProductionOrderDetailsOptions です。
これは、ProductionOptions テーブルの内容です (簡潔にするために、optionType でフィルタリングされています)。
optionType optionValue order showTextBox
----------------------------------------------------------
PACKAGING BLACK BOX 8 False
PACKAGING CUSTOM FOLDING WITH LOGO 4 True
PACKAGING FLANNEL DUST BAG 6 False
PACKAGING FOLDING 2 False
PACKAGING IMAGE FOLDING 1 False
PACKAGING NAVY BOX 9 False
PACKAGING OTHER 13 True
PACKAGING PLAIN FOLDING 3 False
PACKAGING POLYBAG 5 False
PACKAGING SET UP BOX BLACK 11 True
PACKAGING SET UP BOX CREAM 10 True
PACKAGING SET UP BOX NAVY 12 True
PACKAGING SHRINK WRAP 7 False
これは、ProductionOrderDetailsOptions テーブルです。
orderNo detailKey optionType optionValue optionAdditionalInfo
---------------------------------------------------------------------------
000001 1 PACKAGING IMAGE FOLDING
000001 1 PACKAGING POLYBAG NULL
000001 1 PACKAGING SET UP BOX BLACK needs white lettering
000007 4 PACKAGING CUSTOM FOLDING WITH LOGO BMW
ここで、ProductionOrderDetailsOptions テーブルに左結合したときに、ProductionOptions テーブルのすべての行を表示したいと考えています。
必要な LINQ に相当する SQL は次のとおりです。
SELECT *
FROM ProductionOptions po
LEFT JOIN ProductionOrderDetailsOptions o on po.optionType = o.optionType
AND po.optionValue = o.optionValue
AND o.orderNo = '000001'
AND o.detailKey = 1
WHERE po.optionType = 'PACKAGING'
ここに私が望む結果があります:
表向きは、LINQ の結果を GridView のようなオブジェクトにバインドしたいと考えています。
ここまでくれば、よろしくお願いします…。