Comment utiliser union all dans LINQ TO SQL. J'ai utilisé le code suivant pour l'union, alors comment l'utiliser pour l'union à tous?
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
est l'équivalent LINQ de UNION ALL
en SQL.
J'ai mis en place un exemple simple dans LINQPad pour montrer comment utiliser Union
et Concat
. Si vous n'avez pas LINQPad , obtenez-le.
Afin de pouvoir voir des résultats différents pour ces opérations d'ensemble, les premier et deuxième ensembles de données doivent avoir au moins un certain chevauchement. Dans l'exemple ci-dessous, les deux ensembles contiennent le mot "pas".
Ouvrez LINQPad et définissez la liste déroulante Langue sur les instructions C #. Collez ce qui suit dans le volet de requête et exécutez-le:
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...
Le résultat dans LinqPad ressemble à ceci: