Asp.net 使用Linq左连接多个表
我知道Linq的左连接类似于这样:Asp.net 使用Linq左连接多个表,asp.net,linq,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 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,
};
每个联接表都可以有“null”字段。有什么可以帮我的吗,谢谢多连接应该看起来很相似-它变得很详细,但我会尝试一下。 您可能还需要在最后的
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,
};
似乎还有另一种方法可以进行外部连接,但没有什么东西可以测试,我甚至不确定在这种情况下是否可以使用它-如果您感兴趣,请查看本文的答案:
这种说法的问题在于它的翻译。只有第一个联接将被转换为左联接,其他联接将是具有允许空值条件的内部联接。搜索了几个示例,这是我的情况下唯一有效的联接。我不断收到“对象引用未设置为对象实例”错误