How to use union all in LINQ?

落爺英雄遲暮 提交于 2020-02-17 06:54:25

问题


How to use union all in LINQ TO SQL. I have use the following code for union, then how to use this for union all?

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

回答1:


Concat is the LINQ equivalent of UNION ALL in SQL.

I've set up a simple example in LINQPad to demonstrate how to use Union and Concat. If you don't have LINQPad, get it.

In order to be able to see different results for these set operations, the first and second sets of data must have at least some overlap. In the example below, both sets contain the word "not".

Open up LINQPad and set the Language drop-down to C# Statement(s). Paste the following into the query pane and run it:

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...

The result in LinqPad looks like this:



来源:https://stackoverflow.com/questions/10360518/how-to-use-union-all-in-linq

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!