我正在尝试对现有的左连接执行左连接,因为这是一个查找表。
类似的东西:
(from m in maintablerepository.AsQueryable()
join st1 in subtable1repository.AsQuerable on
m.id = s1.id into grps1
from s in grps1.DefaultIfEmpty()
join lt1 in lookuptablerepository.AsQuerable on
s.lkpid = lt1.id into grplt1
from lkp in grplt1.DefaultIfEmpty()
select new {
prop1 = m.prop1,
prop2 = s.prop2,
prop3 = lkp.prop3
}).ToList();
问题是,当我删除查找表上的左连接时,此查询运行正常,但子表中没有匹配的值。
然而,将其重新放回原位导致“对象引用未设置”错误。
我甚至尝试了以下内容,但没有去:
(from m in maintablerepository.AsQueryable()
join st1 in subtable1repository.AsQuerable on
m.id = s1.id into grps1
from s in grps1.DefaultIfEmpty()
join lt1 in lookuptablerepository.AsQuerable on
s.lkpid = lt1.id into grplt1
from lkp in grplt1.DefaultIfEmpty()
where s!=null && lkp!=null
select new {
prop1 = m.prop1,
prop2 = (s==null)?string.Empty:s.prop2,
prop3 = (lkp==null)?string.Empty:lkp.prop3
}).ToList();
如果第一个左连接结果为null,那么如何在其上进行另一次连接?
答案 0 :(得分:1)
问题在于s.lkpid = lt1.id,其中s为null。尝试放置s!= null,如下面的那个
(from m in maintablerepository.AsQueryable()
join st1 in subtable1repository.AsQuerable on
m.id = s1.id into grps1
from s in grps1.DefaultIfEmpty()
where s!=null
join lt1 in lookuptablerepository.AsQuerable on
s.lkpid = lt1.id into grplt1
from lkp in grplt1.DefaultIfEmpty()
where lkp!=null
select new {
prop1 = m.prop1,
prop2 = (s==null)?string.Empty:s.prop2,
prop3 = (lkp==null)?string.Empty:lkp.prop3
}).ToList();

如果帖子有帮助,请将帖子标记为已解答