首页新闻找找看学习计划

请问一个关于linq join 的问题

0
悬赏园豆:5 [已解决问题] 解决于 2016-12-22 10:35

我现在有三张表,假设表A 里有字段 ID,Name,B表里有字段 ID,Name, AID,C表里有字段 ID, AName, BName

A表有数据 1 张三, 2 李四,B表中有数据1 语文 3,2 数学 4. 

然后我用linq 

1 from aTest in A join bTest in B on A.ID equals B.AID into result from BResult in result.DefaultIfEmpty() select new C
2 (
3     AName = A == null ? String.Empry : A.Name,
4     BName = BResult == null ? String.Empry : BResult.Name
5 );

但是报了一个错,未将对象引用到设置的实例,我想是因为B表中没有可和A表中关联的数据,可是针对这种情况我该怎么做处理呢?

跪求大神帮忙

临冰听雪丶的主页 临冰听雪丶 | 初学一级 | 园豆:2
提问于:2016-06-16 10:48
< >
分享
最佳答案
0

仍然没有找到原因,但是我采取了另外一种方式,就是把每一个表的集合取出来之后,然后再把主要的表进行循环,然后再吧自己需要的东西拿出来就可以了。 

临冰听雪丶 | 初学一级 |园豆:2 | 2016-06-16 12:53
其他回答(2)
0

在A,B,C多加几条数据,外键对应的数据一定要有,然后试试,语句就这么长,问题一个一个单词找,

收获园豆:3
ssrS丶 | 园豆:37 (初学一级) | 2016-06-16 11:07

我给B表中加了一条数据   3 英语 2,这样就有一条数据可以关联上了,可是错误信息仍旧没有变 

支持(0) 反对(0) 临冰听雪丶 | 园豆:2 (初学一级) | 2016-06-16 11:16
0

从逻辑上看 你是 A 左连接 B 。那么A的数据时一定存在的。那么B的数据 会可能存在NULL值。

那么BResult 做NULL判断即可。

应该修改为:

select new  ( A.Name, BName = BResult == null ? "" : BResult.Name)

收获园豆:2
紫炁星 | 园豆:57 (初学一级) | 2016-06-16 17:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册