次の 2 つの文字列があるとします。
Dim str1() As String = {"123", "456", "789", "0"}
Dim str2() As String = {"123", "456", "1"}
str1 と str2 の完全な外部結合を実行して、最終的に次のような構造になるにはどうすればよいですか。
{Nothing, "1"}
{"0", Nothing}
{"123", "123"}
{"456", "456"}
{"789", Nothing}
SO および他の Web サイトでのいくつかの議論に基づいて、LINQ を使用してみました。
Dim v = From a In str1 Join b In str2 On a Equals b Group By a Into g = Group
From o In g.DefaultIfEmpty()
しかし、それはこれとまったく同じである望ましい結果を生成しません (通常の INNER JOIN):
Dim v = From a In str1 Join b In str2 On a Equals b
私が見ている最後の例はここにあります(C#)。
そして、ここに別の記事がありますが、可能な限り最短の解決策とするには複雑すぎるようです (もっと単純な C# の例を見てきたので、VB が同じように効率的であることを願っています)。
この質問が役立つ理由
たとえば、ファイルパスがキーであるファイル構造を持つことができます。キーの完全な外部結合を行うことにより、フォルダーを比較し、どのファイルがどちらの側で欠落しているかを見つけて、ユーザーに違いを示すことができます。あらゆる種類の同期タスクで、このアプローチを使用できます。