2016-04-28 6 views
0

Ich habe einen Join in SQL Ich muss mit mehreren Joinbedingung es hier in Linq schreiben, ist die select statment:Linq links in auf Klausel

select * from products p 
left join customer cust 
on((cust.identifier = p.orgID or cust.identifier = p.personalno) and cust.identifier is not null); 

Wie kann ich diese Aussage in Linq schreiben?

+0

Verwenden 'Where' statt' Join' –

+0

ich es vor oft schon gelesen gibt es nichts über Zustand dort in on-Klausel .. Käsebrot ... – R01

Antwort

3
  • Wenn Sie es wirklich mit einem JOIN tun möchten, können Sie es wie folgt zu tun:

    from cust in customer 
    join _p1 in products on cust.identifier equals _p1.orgID into _p1 
    from p1 in _p1.DefaultIfEmpty() 
    join _p2 in products on cust.identifier equals _p2.personalno into _p2 
    from p2 in _p2.DefaultIfEmpty() 
    where cust.identifier != null 
    && (p1 != null || p2 != null) 
    select new { Customer = cust, Product = p1 == null ? p2 : p1 } 
    
  • Eine einfachere Lösung ohne JOIN Stichwort wäre:

    from p in products 
    from cust.Where(q => q.identifier != null && (p.orgID == q.identifier || p.personalno == q.identifier)).DefaultIfEmpty() 
    where cust != null 
    select new { Product = p, Customer = cust } 
    
  • Um die Frage zu beantworten, die die Überschrift vorschlägt, machen Sie Folgendes, um einen Beitritt zu mehreren Bedingungen zu machen, aber beachten Sie, dass dies nur funktioniert AND Bedingungen und nicht für OR Bedingungen:

    from t1 in Table1 
    join t2 in Table2 on new { Criteria1 = t1.criteria1, Criteria2 = t1.criteria2 } equals new { Criteria1 = t2.criteria1, Criteria2 = t2.criteria2 } 
    select new { T1 = t1, T2 = t2 } 
    
+0

thnx hat Ihre Lösung bereits verwendet. – R01

+0

nette Arbeit +1, 2. Bulletin-Antwort ist sehr nützlich für meinen Code, ich kämpfte durch Hinzufügen, wo Bedingung für Kind-Tabelle mit Links Join, von Ihrem Code ich aktualisiert, wo Bedingung in der Join selbst. Ich habe auch diesen Link http://searchoracle.techtarget.com/answer/LEFT-OUTER-JOIN-with-ON-condition-or-WHERE-condition angesprochen – Vijayaraghavan