2012-06-06 19 views

cevap

18

Çok katılmak oldukça benzer görünmelidir - oldukça ayrıntılı alır, ama ben bu bir deneyin. Son where hattında da bazı null denetimine ihtiyacınız olabilir. Bu yazı üzerine bir cevap kontrol -

var personalInfoQuery = from t in crnnsupContext.Tombstones 
         join p in crnnsupContext.ProvStates on t.ProvinceState equals p.ProvinceStateID into group1 
         from g1 ini group1.DefaultIfEmpty() 
         join n in crnnsupContext.NursingSchools on g1.NursingSchool equals n.SchoolID into group2 
         from g2 in group2.DefaultIfEmpty() 
         join i in crnnsupContext.InitialEducations on g2.InitialEducation equals SqlFunctions.StringConvert((double)i.InitalEducationID, 1) into group3 
         from g3 in group3.DefaultIfEmpty() 
         join g in crnnsupContext.tbl_GraduatedProvCountry on g3.GradPovCountry equals g.id into group4 
         from g4 in group4.DefaultIfEmpty() 
         where g4 == null || g4.RegNumber == _username 
         select new CPersonalInfo 
         { 
          ProvState = p, 
          Tombstone = t, 
          NursingSchool = n, 
          InitialEducation = i, 
          GraduatedProvCountry = g, 
         }; 

yanı ama bu durumda kullanmak mümkündür bile emin değilim üzerinde test etmek şeyler kalmadan birleştiği dış yapmanın başka bir yolu var gibi görünüyor Eğer ilgileniyorsanız: outer join in linq

+0

Çok teşekkürler! – pita

+2

Böyle bir deyimdeki sorun çevirisidir. Sadece ilk birleşim sol birleşim olarak çevrilecek, diğerleri ise boş değerlere izin verecek koşullarla iç birleşme olacak. – Rufix

+0

Birkaç örnek arandığımda, bu benim durumumdaki tek örnek. –