//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
//在这里,可以赋默认值,可以三元表达式,但是不能调用外部方法