c#linq左外結合:代替アプローチ
この記事では、従来のjoin-on-equals-into
句を使用せずにLINQに左外結合をオブジェクトに実行する方法を示しています。 簡潔で効率的なソリューションのために、from
およびjoin
オペレーターをDefaultIfEmpty()
と組み合わせて活用します。
このLinqクエリは、
var q = from l in lefts join r in rights on l.Key equals r.Key into ps_jointable from p in ps_jointable.DefaultIfEmpty() select new JoinPair { LeftId = l.Id, RightId = p?.Id ?? 0 };
コレクションで左外の結合を実行し、lefts
オブジェクトの新しいコレクションを生成します。 rights
の各アイテムについて、JoinPair
プロパティに基づいて一致するアイテムを見つけようとします。 一致が存在する場合、lefts
inrights
は、一致したKey
アイテムのRightId
null-conditional演算子(JoinPair
)およびnull-coalescingオペレーター(Id
)を使用してデフォルトは0になります。
rights
RightId
メソッドが不可欠です。コレクションに一致が見つからない場合でも、結果が生成されるようにします。 一致がない場合、?.
はデフォルト値(この場合はnull)を返します。これは、ヌル条件付きおよびヌルコーリングス演算子によって優雅に処理されます。 このアプローチは、LINQの左外の結合の標準??
構文のより読みやすく潜在的にパフォーマンスのある代替品を提供します。
以上がJoin-On-Equals-Into-Intoの条項を使用せずにLINQで左外結合を実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。