2010-03-22 6 views
3

Pourriez-vous s'il vous plaît aidez-moi à comprendre cette photo? Je dois remplacer une jointure avec une table OSLP avec jointure OUTER. Semble un peu difficile pour quelqu'un qui n'est pas un expert dans Linq aux entités. Comment ferais-je cela?Linq to Entities - left Outer Join

var surgeonList = (
    from item in context.T1_STM_Surgeon 
     .Include("T1_STM_SurgeonTitle") 
     .Include("OTER") 
    where item.ID == surgeonId 
    join reptable in context.OSLP 
     on item.Rep equals reptable.SlpCode 
    select new 
    { 
     ID = item.ID, 
     First = item.First, 
     Last = item.Last, 
     Rep = reptable.SlpName, 
     Reg = item.OTER.descript, 
     PrimClinic = item.T1_STM_ClinicalCenter.Name, 
     Titles = item.T1_STM_SurgeonTitle, 
     Phone = item.Phone, 
     Email = item.Email, 
     Address1 = item.Address1, 
     Address2 = item.Address2, 
     City = item.City, 
     State = item.State, 
     Zip = item.Zip, 
     Comments = item.Comments, 
     Active = item.Active, 
     DateEntered = item.DateEntered 
    }).ToList(); 

Merci d'avance!

Répondre

0

Syntaxe est la suivante et laissez-moi savoir si vous avez du mal à traduire votre code. jointure externe générique (groupe join):

var query = de l à gauche

join r in right 
    on l.ID 
    equals l.right.ID into groupedJoin 
    select new 
    { 
     ID= l.ID, 
     OuterJoined= groupedJoin.Select(r=> right) 
    }; 

Votre résultat est tout à gauche, même si n'existe pas droit.

Il est évident que je ne peux pas garantir compilera mais il ressemblerait à ceci:

var surgeonList = (

from item in context.T1_STM_Surgeon 
     .Include("T1_STM_SurgeonTitle") 
     .Include("OTER") 
    where item.ID == surgeonId 
    join reptable in context.OSLP 
     on item.Rep equals reptable.SlpCode into groupedJoin 
    select new 
    { 
     ID = item.ID, 
     First = item.First, 
     Last = item.Last, 
     Rep = reptable.SlpName, 
     Reg = item.OTER.descript, 
     PrimClinic = item.T1_STM_ClinicalCenter.Name, 
     Titles = item.T1_STM_SurgeonTitle, 
     Phone = item.Phone, 
     Email = item.Email, 
     Address1 = item.Address1, 
     Address2 = item.Address2, 
     City = item.City, 
     State = item.State, 
     Zip = item.Zip, 
     Comments = item.Comments, 
     Active = item.Active, 
     DateEntered = item.DateEntered 
     OSLP = groupedJoin.Select(x=>WHATEVERYOUNEED) 
}).ToList(); 

Et il vous suffit de remplacer groupedJoin.Select (x => WHATEVERYOUNEED) avec soit sélectionner quelque chose ou un simple .ToList

+0

Pourriez-vous modifier votre message pour inclure des blocs de code, s'il vous plaît? Il est impossible de lire –

+0

Je l'ai fait peu de temps après que j'ai vu le chaos ... est-ce mieux? – Nix