web-dev-qa-db-ja.com

LINQでunion allを使用する方法は?

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();
53
Muruga

Concatは、SQLのUNION ALLに相当するLINQです。

UnionConcatの使用方法を示すために、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の結果は次のようになります。

enter image description here

103
Jon Crowell