关于Linq左连接或右连接的一点问题

在进行左连接或右连接时经常出现NULL对象,那么引用NULL对象肯定会报错的,因此在生成对象输出时首先要判断对象是否为NULL,然后再获取NULL对象的属性,可能一部分人会判断对象的属性是否为NULL,对象本身都是NULL,那么肯定不存在属性,引用一个不存在的对象的属性肯定是不可以的,所有要判断对象是否为NULL。
var query = from person in container.T_BASE_PERSON
                        join plan in container.T_PLAN_PLAN on
                            new {PERSON_ID = person.ID, ASSESS_CYCLE = (int?) assessCycle} equals
                            new {plan.PERSON_ID, plan.ASSESS_CYCLE} into temp
                        from personPlan in temp.DefaultIfEmpty()
                        join assessinfo in container.T_BASE_ASSESSINFO on person.ID equals assessinfo.PERSON_ID
                        join org in container.T_BASE_ORG on assessinfo.DEPT_ORG_CODE equals org.ORG_CODE
                        where assessinfo.DIRECTORS_ID.Contains(directorCode) && assessinfo.ASSESS_CYCLE == assessCycle
                        select new
                                   {
                                       PERSON_CODE = person.PERSON_CODE,
                                       PERSON_NAME = person.PERSON_NAME,
                                       ORG_NAME = org.ORG_NAME,
                                       STATUS = personPlan == null ? -1 : personPlan.STATUS,
                                       //左连接,可能为空,下同
                                       ID = person.ID,
                                       PLAN_ID = personPlan == null ? 0 : personPlan.ID
                                   };
            return query.AsQueryable();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值