LINQ to SQL左连接通过左连接c#

时间:2015-04-14 19:08:56

标签: c# join linq-to-sql left-join

我正在尝试对现有的左连接执行左连接,因为这是一个查找表。

类似的东西:

(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,那么如何在其上进行另一次连接?

1 个答案:

答案 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();




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