当我尝试将两个列表作为左连接加入时,它将引发异常字符串null异常
enter code here
public void LeftJoinPerson() { lstPerson = new List() { new Person(){ id = 1, name = "A" }, new Person(){id = 2,name = "B"}, new Person(){id=3,name="C"}, new Person(){id=4,name="D"} };lstPersonDetail = new List<PersonDetals>() { new PersonDetals() { pid = 1, mobile = 9685745285, address = "Address1" }, new PersonDetals() { pid = 2, mobile = 9685745285, address = "Address1" }, new PersonDetals() { pid = 3, mobile = 9685745285, address = "Address1" } }; var dataLeftJoin = (from a in lstPerson join b in lstPersonDetail on a.id equals b.pid into c from d in c.DefaultIfEmpty() select new { a.id, a.name, d.mobile, d.address, d.pid }).ToList(); }
答案 0 :(得分:2)
在“左联接”中,右表可能没有数据,因此在创建新的选择类型时需要检查是否为空。
尝试以下方法:
var dataLeftJoin = (from a in lstPerson
join b in lstPersonDetail on a.id equals
b.pid into c
from d in c.DefaultIfEmpty()
select new {
a.id,
a.name,
mobile = d == null ? 0 : d.mobile,
address = d == null ? "" : d.address,
pid = d == null ? 0 : d.pid
}).ToList();
答案 1 :(得分:0)
<pre>
var dataLeftJoin = (from a in lstPerson
join b in lstPersonDetail on a.id equals
b.pid into c
from d in c.DefaultIfEmpty()
select new {
a.id,
a.name,
mobile = d == null ? 0 : d.mobile,
address= d == null ? null : d.address,
pid= d == null ? 0 : d.pid
}).ToList();