SELECT * FROM paquet_esc PE
INNER JOIN depot D
ON PE.id_paquet_esc = D.paquet_esc_id
INNER JOIN fichier_esc FE
ON D.fichier_id = FE.id_fichier
INNER JOIN engin EN
ON FE.engin_id = EN.id_engin
LEFT OUTER JOIN reception R
ON FE.id_fichier = R.fichier_id
LEFT OUTER JOIN traitement T
ON FE.id_fichier = T.fichier_id
LEFT OUTER JOIN code_erreur_traitement CET
ON T.code_erreur_id = CET.id_code_erreur
LEFT OUTER JOIN integration I
ON FE.id_fichier = I.fichier_id
LEFT OUTER JOIN envoi EI
ON FE.id_fichier = EI.fichier_id
Asked
Active
Viewed 192 times
-1
-
http://stackoverflow.com/questions/267488/linq-to-sql-multiple-left-outer-joins – shree.pat18 Aug 06 '14 at 07:44
-
I want the query in LAMBDA expression. – d_raja_23 Aug 06 '14 at 07:47
2 Answers
0
Maybe something like this:
var result= (
from PE in db.paquet_esc
join D in db.depot
on PE.id_paquet_esc equals D.paquet_esc_id
join FE in db.fichier_esc
on D.fichier_id equals FE.id_fichier
join EN in db.engin
on FE.engin_id equals EN.id_engin
from R in db.reception
.Where(w=>FE.id_fichier == w.fichier_id).DefaultIfEmpty()
from T in db.traitement
.Where(w=>FE.id_fichier == w.fichier_id).DefaultIfEmpty()
from CET in db.code_erreur_traitement
.Where(w=>T.code_erreur_id == w.id_code_erreur).DefaultIfEmpty()
from I in db.integration
.Where(w=>FE.id_fichier == w.fichier_id).DefaultIfEmpty()
from EI in db.envoi
.Where(w=>FE.id_fichier == w.fichier_id).DefaultIfEmpty()
select new
{
PE.id_paquet_esc,
D.paquet_esc_id,
D.fichier_id
/*And some other columns*/
}
).ToList();
Where db
is the linq data context

Arion
- 31,011
- 10
- 70
- 88
-
Hi, this query is working for me (test is ok) but i want the query in LAMBDA EXPRESSION not in normal linq query. – d_raja_23 Aug 06 '14 at 07:58
-
2
-
0
here is the demo for your inner join and left join:
var q= from PE in paquet_esc
join D in depot on PE.id_paquet_esc equals D.paquet_esc_id
join FE in fichier_esc on D.fichier_id equals FE.id_fichier
join EN in engin on FE.engin_id equals EN.id_engin
join R in reception ON FE.id_fichier equals R.fichier_id into lg1
from R in lg1.DefaultIfEmpty()
join T in traitement ON FE.id_fichier equals T.fichier_id into lg2
from T in lg2.DefaultIfEmpty()
/*bala bala bala */
select PE;

Tim.Tang
- 3,158
- 1
- 15
- 18
-
I want the query in LAMBDA EXPRESSION not in normal linq query (your suggestion is ok but i don't expect in normal linq query). – d_raja_23 Aug 06 '14 at 08:02
-
@user3066993 well,if you want lamda,you can see this link: http://www.databaseskill.com/1455468/, but I think normal linq query for left join is easy to read. – Tim.Tang Aug 06 '14 at 08:23
-
Ok, but if you can give a suggestion to me for lambda, you are welcome. – d_raja_23 Aug 07 '14 at 07:45