var query = from a in data.A join b in data.B on a.bid equals b.id into ab from b in ab.DefaultIfEmpty() join c in data.C on b.cid equals c.id into bc from c in bc.DefaultIfEmpty() join d in data.D on c.did equals d.id into cd from d in cd.DefaultIfEmpty() join e in data.E on d.eid equals e.id into ce from e in ce.DefaultIfEmpty() select new Signature { Id = a.Id, Name = b==null?"":b.Name, Pro = c==null?"":c.Pro, IpAdd = d==null?"":d.IpAdd };
Select里的cast发生的问题。既然是outer join,你要考虑到 r2.Pro 可能为 null 的时候。 象2楼那样就可以了 ...... select new Signature { Id = a.Id, Name = b==null?"":b.Name, Pro = c==null?"":c.Pro, IpAdd = d==null?"":d.IpAdd };
var query = from a in data.A
join b in data.B
on a.bid equals b.id into ab
from b in ab.DefaultIfEmpty()
join c in data.C
on b.cid equals c.id into bc
from c in bc.DefaultIfEmpty()
join d in data.D
on c.did equals d.id into cd
from d in cd.DefaultIfEmpty()
join e in data.E
on d.eid equals e.id into ce
from e in ce.DefaultIfEmpty()
select new Signature
{
Id = a.Id,
Name = b==null?"":b.Name,
Pro = c==null?"":c.Pro,
IpAdd = d==null?"":d.IpAdd
};
象2楼那样就可以了 ......
select new Signature
{
Id = a.Id,
Name = b==null?"":b.Name,
Pro = c==null?"":c.Pro,
IpAdd = d==null?"":d.IpAdd
};