LINQ to SQL: 複数の結合条件を使用した左外部結合の実装
LINQ to SQL では、C# を使用して複雑なクエリを作成できます。構文。一般的なタスクの 1 つは、複数の結合条件を使用して左外部結合を実装することです。
WHERE 句ではなく JOIN ステートメントに結合条件を含める必要性を理解するには、次の SQL ステートメントを考慮してください。
SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100
ここでは、ファクト テーブル (f) に特定の期間に対応する行がない場合でも、その期間を結果に含めたいと考えています。 WHERE 句に追加の結合条件を配置すると、そのようなピリオドが結果から除外されます。
LINQ to SQL のソリューションには、拡張メソッド構文の使用が含まれます。次のコード スニペットは、その方法を示しています。
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty() where p.companyid == 100 select f.value
代わりに、サブクエリを使用することもできます。
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in (from f in fg where f.otherid == 17 select f).DefaultIfEmpty() where p.companyid == 100 select f.value
JOIN ステートメントに結合条件を置くことで、 otherid = 17 条件を満たす対応するファクトは、左外部結合を実行しながら結果に含まれます。このアプローチにより、左外部結合の利点を犠牲にすることなく、目的の動作を実現できます。
以上がLINQ to SQLで複数の結合条件を持つ左外部結合を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。