ホームページ >バックエンド開発 >C++ >LINQ to SQLで複数の結合条件を持つ左外部結合を実装する方法は?

LINQ to SQLで複数の結合条件を持つ左外部結合を実装する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-31 22:16:17550ブラウズ

How to Implement a Left Outer Join with Multiple Join Conditions in LINQ to SQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。