Asp.net
使用 Linq 左連接多個表
我知道 Linq 的左連接是這樣的:
var q=from e in db.Employes join o in db.Orders on e equals o.Emoloyee into ords from on in ords.DefautIfEmpty() select new { e.FirstName, e.LastName };那麼多重連接呢?這是我的程式碼
var personalInfoQuery = from t in crnnsupContext.Tombstones join p in crnnsupContext.ProvStates on t.ProvinceState equals p.ProvinceStateID join n in crnnsupContext.NursingSchools on t.NursingSchool equals n.SchoolID join i in crnnsupContext.InitialEducations on t.InitialEducation equals SqlFunctions.StringConvert((double)i.InitalEducationID, 1) join g in crnnsupContext.tbl_GraduatedProvCountry on t.GradPovCountry equals g.id where t.RegNumber == _username select new CPersonalInfo { ProvState = p, Tombstone = t, NursingSchool = n, InitialEducation = i, GraduatedProvCountry = g, };每個連接表都可以有“空”欄位。有什麼可以幫助我的,謝謝
多連接應該看起來非常相似 - 它變得非常冗長,但我會嘗試一下。您可能還需要在最後
where一行進行一些空值檢查。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, };似乎還有另一種進行外部連接的方法,但是沒有東西可以測試它我什至不確定在這種情況下是否可以使用它 - 如果您有興趣,請查看這篇文章的答案: outer加入linq