在使用Linq to Entities时,我有一个关于joins的问题。根据文档,在不带限定符的连接上使用类似于左外部连接。然而,当我执行下面的代码时,我得到一个返回的计数为零。但是如果我注释掉这三个连接线,我得到的计数是1,这将表明连接是作为内部连接的。我有两个问题。一个是正确的内部还是外部作为默认值?第二,我如何做另一个,即内部或外部?内部和外部的关键字不起作用。
var nprs = (from n in db.FMCSA_NPR
join u in db.FMCSA_USER on n.CREATED_BY equals u.ID
join t in db.LKUP_NPR_TYPE on n.NPR_TYPE_ID equals t.ID
join s in db.LKUP_AUDIT_STATUS on n.NPR_STATUS_ID equals s.ID
where n.ROLE_ID == pRoleId
&& n.OWNER_ID == pOwnerId
&& n.NPR_STATUS_ID == pNPRStatusId
&& n.ACTIVE == pActive
select n).ToList();
if (nprs.Count() == 0)
return null;发布于 2011-02-07 23:27:16
不带键的连接操作类似于内部连接。我目前在文档中找不到它,但当我找到它时,我会发布一个编辑。但是,为了执行左外部联接,这里有一个来自101 LINQ Samples:http://msdn.microsoft.com/en-us/vcsharp/ee908647#leftouterjoin的示例
发布于 2011-02-07 23:37:34
默认情况下,LINQ中的联接是内部联接。要执行外部连接,您必须手动执行"if-null-then“或编写自己的自定义连接操作。
带有手动if-null的左侧-外部示例:
var query = from person in people
join pet in pets on person equals pet.Owner into gj //inner
from subpet in gj.DefaultIfEmpty()
select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) }; //left outerhttps://stackoverflow.com/questions/4922988
复制相似问题