説明:
内部接続:2つのリストに対応するキーを持つ要素は、対応する要素のない要素を除外するために削除されます。
外部接続(左接続):左リストに要素を含めて、右のリストにも対応する要素はありません。
すべての外部接続:キーSelectKeyaとSelectKeyBは、接続キーとしてAとBのオブジェクトの属性アプリケーションを指定します。 プロジェクト関数プロジェクト、接続された要素を結果型TRESultに変換する方法を指定します。
オプションのデフォルト値defaultAおよびdefaultBは、別のリストに対応する要素がない場合、これらの値を使用します。
カスタムキー比較の比較を指定するために使用されるオプションのキー比較CMP。<code class="language-csharp">internal static IEnumerable<TResult> FullOuterJoin<TA, TB, TKey, TResult>( this IEnumerable<TA> a, IEnumerable<TB> b, Func<TA, TKey> selectKeyA, Func<TB, TKey> selectKeyB, Func<TA, TB, TKey, TResult> projection, TA defaultA = default(TA), TB defaultB = default(TB), IEqualityComparer<TKey> cmp = null) { cmp = cmp ?? EqualityComparer<TKey>.Default; var alookup = a.ToLookup(selectKeyA, cmp); var blookup = b.ToLookup(selectKeyB, cmp); var keys = new HashSet<TKey>(alookup.Select(p => p.Key), cmp); keys.UnionWith(blookup.Select(p => p.Key)); var join = from key in keys from xa in alookup[key].DefaultIfEmpty(defaultA) from xb in blookup[key].DefaultIfEmpty(defaultB) select projection(xa, xb, key); return join; }</code>
使用法:
以上がLINQを使用して2つのリストで完全な外側結合を実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。