我现在有三张表,假设表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表中关联的数据,可是针对这种情况我该怎么做处理呢?
跪求大神帮忙
仍然没有找到原因,但是我采取了另外一种方式,就是把每一个表的集合取出来之后,然后再把主要的表进行循环,然后再吧自己需要的东西拿出来就可以了。
在A,B,C多加几条数据,外键对应的数据一定要有,然后试试,语句就这么长,问题一个一个单词找,
我给B表中加了一条数据 3 英语 2,这样就有一条数据可以关联上了,可是错误信息仍旧没有变
从逻辑上看 你是 A 左连接 B 。那么A的数据时一定存在的。那么B的数据 会可能存在NULL值。
那么BResult 做NULL判断即可。
应该修改为:
select new ( A.Name, BName = BResult == null ? "" : BResult.Name)