Linq的左右连接的理解

//linq中只有连接和左连接(右连接调换左右表即可)
        from Receive in db.MessageReceive.where(r=>r.Mid==msgId)
            join bbsUser in db.BBSUser
                on Receive.Uid equals bbsUser.UserId
                    into ReceiverUser    //把两表相关联后放到ReceiverUser表中
                        from User in ReceiverUser.DefaultIfEmpty()//
                            select new BBSMessageModel
                            {
                            RUId=Receive.Uid,
                            RName= User ==null?null:User.staffName+"woshiyiers",
                            RRealName=User==null?null:User.staffName,
                            };
        

 //注释:

       //如上:因为是左外连,所以返回左表所有元素,右表user有可能无对应为空,ReceiverUser.DefaultIfEmpty()指定要在某个元素不具有匹配元素时产生的默认右侧元素,可以使用null作为任何引用类型的默认值。这时候linq得到的这一条user是null,

       //所以所有user下的字段都需要判断并给默认值如下。 RName= User ==null?null:User.staffName

       //在这里,可以赋默认值,可以三元表达式,但是不能调用外部方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值