这条null是哪里来的,有人告诉我是匹配失败的主数据doc1中“xiaowei”变成的
可是在sql中即使子表没有匹配的行也是会返回一条数据的,不会返回一整条null。
难道是linq的特性?
可以具体了解一下left join 和 inner join 的区别
你 select 的是右表, 右表是一条匹配到了的 和一条没有匹配到的 null 有啥问题吗? 我也是醉了
???sql左连接中 即使主表在子表中没有匹配到对应的数据 也不会返回null,而是返回一条由主表+子表所有字段组成的的行,主表字段继承主表的数据,子表数据由于没匹配到显示为null,根本就不会直接返回一条null数据。
具体你可以参考一下你平时做项目时,写Linq左连接的时候是不是重来没有刻意去判断过B表不能等于null,我猜测这个应该不是sql的问题,应该是Linq或者是这里采用的数据是来自于List的原因
咱也不清楚,所以问问嘛
@你猜丶: Linq 和 sql 对右表处理的区别 Linq 中 右表没匹配到 对应的 item 就为 null, sql 是对应的右表的字段为 null. linq 中 DefaultIfEmpty() 应该有有参的方法 可以设置没匹配到的默认值。
实际项目中 当select 右表的字段就需要判断右表 item 是否为null, 不然会报错
好像最后要
select new {
d1.xxx,
d.yyy,
};