首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq to Entities联接

Linq to Entities联接
EN

Stack Overflow用户
提问于 2011-02-07 23:22:50
回答 2查看 1K关注 0票数 2

在使用Linq to Entities时,我有一个关于joins的问题。根据文档,在不带限定符的连接上使用类似于左外部连接。然而,当我执行下面的代码时,我得到一个返回的计数为零。但是如果我注释掉这三个连接线,我得到的计数是1,这将表明连接是作为内部连接的。我有两个问题。一个是正确的内部还是外部作为默认值?第二,我如何做另一个,即内部或外部?内部和外部的关键字不起作用。

代码语言:javascript
复制
 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;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-07 23:27:16

不带键的连接操作类似于内部连接。我目前在文档中找不到它,但当我找到它时,我会发布一个编辑。但是,为了执行左外部联接,这里有一个来自101 LINQ Sampleshttp://msdn.microsoft.com/en-us/vcsharp/ee908647#leftouterjoin的示例

票数 1
EN

Stack Overflow用户

发布于 2011-02-07 23:37:34

默认情况下,LINQ中的联接是内部联接。要执行外部连接,您必须手动执行"if-null-then“或编写自己的自定义连接操作。

带有手动if-null的左侧-外部示例:

代码语言:javascript
复制
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 outer

  • How to: Perform Left Outer Joins
  • How to: Perform Custom Join Operations
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4922988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档