2012-04-28 15 views
42

Jak korzystać z union all w LINQ TO SQL. Mam następujący kod dla union, a następnie, w jaki sposób używać tego dla związku wszystkie?Jak korzystać z połączenia all w LINQ?

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

należy zaznaczyć odpowiedź Jon Crowell jako „zaakceptowane” – arviman

Odpowiedz

87

Concat jest odpowiednikiem LINQ z UNION ALL SQL.

Skonfigurowałem prosty przykład w LINQPad, aby pokazać, jak używać Union i Concat. Jeśli nie masz LINQPad, pobierz.

Aby móc zobaczyć różne wyniki dla tych operacji zestaw, pierwszy i drugi zestaw danych musi mieć co najmniej pewne nakładanie. W poniższym przykładzie oba zestawy zawierają słowo "nie".

Otwórz LINQPad i ustaw rozwijaną listę języków na oświadczenia w języku C#. Wklej następujące zapytanie do okienka i uruchom go:

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

Wynik w LINQPad wygląda następująco:

enter image description here

Powiązane problemy