首页 新闻 会员 周边 捐助

linq中左连接中这个null是哪里来的。

0
悬赏园豆:50 [待解决问题]

 

 

这条null是哪里来的,有人告诉我是匹配失败的主数据doc1中“xiaowei”变成的

可是在sql中即使子表没有匹配的行也是会返回一条数据的,不会返回一整条null。

 

难道是linq的特性?

你猜丶的主页 你猜丶 | 初学一级 | 园豆:135
提问于:2021-12-21 11:41
< >
分享
所有回答(3)
0

可以具体了解一下left join 和 inner join 的区别

KingMi | 园豆:1344 (小虾三级) | 2021-12-21 15:30
0

你 select 的是右表, 右表是一条匹配到了的 和一条没有匹配到的 null 有啥问题吗? 我也是醉了

huiyuanai709 | 园豆:487 (菜鸟二级) | 2021-12-27 22:14

???sql左连接中  即使主表在子表中没有匹配到对应的数据  也不会返回null,而是返回一条由主表+子表所有字段组成的的行,主表字段继承主表的数据,子表数据由于没匹配到显示为null,根本就不会直接返回一条null数据。

 

 

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2021-12-28 14:09

具体你可以参考一下你平时做项目时,写Linq左连接的时候是不是重来没有刻意去判断过B表不能等于null,我猜测这个应该不是sql的问题,应该是Linq或者是这里采用的数据是来自于List的原因

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2021-12-28 14:15

咱也不清楚,所以问问嘛

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2021-12-28 14:16

@你猜丶: Linq 和 sql 对右表处理的区别 Linq 中 右表没匹配到 对应的 item 就为 null, sql 是对应的右表的字段为 null. linq 中 DefaultIfEmpty() 应该有有参的方法 可以设置没匹配到的默认值。
实际项目中 当select 右表的字段就需要判断右表 item 是否为null, 不然会报错

支持(0) 反对(0) huiyuanai709 | 园豆:487 (菜鸟二级) | 2021-12-28 17:35
0

好像最后要
select new {
d1.xxx,
d.yyy,
};

LiveCoding | 园豆:502 (小虾三级) | 2022-04-11 16:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册