LINQ TO SQLでユニオンをすべて使用する方法。私は次のコードをユニオンに使用していますが、これをユニオンすべてに使用する方法はありますか?
List<tbEmployee> lstTbEmployee = obj.tbEmployees.ToList();
List<tbEmployee2> lstTbEmployee2 = (from a in lstTbEmployee
select new tbEmployee2
{
eid = a.eid,
ename = a.ename,
age = a.age,
dept = a.dept,
doj = a.doj,
dor = a.dor
}).Union(obj.tbEmployee2s).ToList();
Concat
は、SQLのUNION ALL
に相当するLINQです。
Union
とConcat
の使用方法を示すために、LINQPadで簡単な例をセットアップしました。 LINQPad がない場合は入手してください。
これらの集合演算で異なる結果を表示できるようにするには、最初と2番目のデータセットに少なくともある程度のオーバーラップが必要です。以下の例では、両方のセットに「not」という単語が含まれています。
LINQPadを開き、[言語]ドロップダウンを[C#ステートメント]に設定します。以下をクエリペインに貼り付けて実行します。
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...
LinqPadの結果は次のようになります。