如何在LINQ TO SQL中使用union all。 我使用以下代码进行union,然后如何将它用于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();
答案 0 :(得分:99)
Concat
是SQL中UNION ALL
的LINQ等价物。
我在LINQPad中设置了一个简单示例来演示如何使用Union
和Concat
。如果您没有LINQPad,请获取它。
为了能够看到这些设置操作的不同结果,第一组和第二组数据必须至少有一些重叠。在下面的示例中,两个集合都包含单词“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的结果如下所示: