Concat
SQLでUNION ALL
のLINQと同等です。
Union
とConcat
を使用する方法を示すために、LINQPadに簡単な例を設定しました。 LINQPadがない場合は取得してください。
これらのセット操作で異なる結果を表示するには、第1および第2のデータセットに少なくとも一部のオーバーラップが必要です。以下の例では、両方のセットに「not」という単語が含まれています。
LINQPadを開き、言語ドロップダウンをC#ステートメントに設定します。クエリペインに次のように貼り付けて、それを実行します。LinqPadで
string[] jedi = { "These", "are", "not" };
string[] mindtrick = { "not", "the", "droids..." };
// Union of jedi with mindtrick
var union =
(from word in jedi select word).Union
(from word in mindtrick select word);
// Print each word in union
union.Dump("Union");
// Result: (Note that "not" only appears once)
// These are not the droids...
// Concat of jedi with mindtrick (equivalent of UNION ALL)
var unionAll =
(from word in jedi select word).Concat
(from word in mindtrick select word);
// Print each word in unionAll
unionAll.Dump("Concat");
// Result: (Note that "not" appears twice; once from each dataset)
// These are not not the droids...
// Note that union is the equivalent of .Concat.Distinct
var concatDistinct =
(from word in jedi select word).Concat
(from word in mindtrick select word).Distinct();
// Print each word in concatDistinct
concatDistinct.Dump("Concat.Distinct");
// Result: (same as Union; "not" only appears once)
// These are not the droids...
結果は次のようになります。
あなたは「受け入れられた」とジョン・クローウェルの答えをマークしなければなりません – arviman