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

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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页