martedì 16 agosto 2011

left / right join con linq

Dopo un periodo si assenza eccomi qui.
Spesso vedo tra vari post difficoltà da parte di programmatori nel realizzare una left o right join con linq.
Ecco la soluzione:

Left join
var query = from C in clienti
join OV in orariVisita on C.id equals OV.idCliente into JoinedCliOrarVis
from OV in JoinedCliOrarVis.DefaultIfEmpty()
select new {nominativo = C.nominativo, oraVisita = OV.oraVisita};

ovviamente se si vuole una right join basta invertire la query:

Right join

var query = from OV in orariVisita
join C in clienti on  OV.idCliente equals  C.id into JoinedOrarVisCli
from OV in JoinedOrarVisCli.DefaultIfEmpty()
select new {nominativo = C.nominativo, oraVisita = OV.oraVisita};


penso che sia molto semplice.

Buon lavoro :-)

Nessun commento:

Posta un commento