2009-08-20 6 views
4

Quelqu'un peut-il m'aider à traduire cette requête en LINQ? Je ne peux pas trouver un bon moyen de le traduire, merci!Left outer Rejoindre LINQ

SELECT 
    C.id, 
    C.id_old, 
    C.cus_id, 
    C.namefirst, 
    C.title, 

    CP.id as 'cus_phone_jct.id', 
    CP.contact_id, 
    CP.phone_id, 
    CP.ext, 

    P.id as 'cus_phone.id', 
    P.phone, 
    P.typ_id, 
    P.status_id, 
    P.donotcontact 

FROM cus_contact C 
LEFT OUTER JOIN cus_phone_jct CP ON C.id = CP.contact_id 
LEFT OUTER JOIN cus_phone P ON CP.phone_id = P.id 
WHERE C.cus_id = 4 
+2

Urm, pourriez-vous simplifier qu'un peu - comme un champ de chaque table? – Benjol

+0

Et s'il vous plaît jeter un peu de formatage. En ce moment j'ai envie de prendre des fourches à mes yeux. j/k –

+0

Est-ce mieux? – David

Répondre

6

Essayez,

from c in DataContext.cus_contact 
join cp in DataContext.cus_phone_jct on c.id equals cp.contact_id into cp2 
    from cp3 in cp2.DefaultIfEmpty() 
join p in DataContext.cus_phone on cp3.phone_id equals p.id into p2 
    from p3 in p2.DefaultIfEmpty() 
where c.cus_id = 4 
select 
    c.id, 
    cp3.id 
    ... 
+0

That, s perfect! J'ai besoin d'apprendre plus de choses. Cela me semble tellement étranger maintenant, merci! – RyanOC