情况是我正在加入具有相同ID的2列以结束单列表,我的问题是一些Info没有联系,所以这行(b => b.InfoID == a.ID)
返回null或false并显示{{1错误,有人可以帮我解决我在Linq中遇到的问题吗?
这是我的表之前显示的内容
NullReferenceException
我希望我的输出是一个组合
| Name | Address | Cellphone | Email |
| John | NY | n/a | johndoe@y.c |
| John | NY | 123456781 | n/a |
这是我的Linq,它显示了已加入的表,但当| Name | Address | Cellphone | Email |
| John | NY | 123456781 | johndoe@y.c |
没有联系时,它返回Info
NullReferenceError
答案 0 :(得分:2)
您应该检查b或c对象是否为空
var an = (from a in db.Info
from b in db.Contact.Where(b => b.InfoID == a.ID && b.ContactTypeID == 56 && b.LogicalDelete == false).DefaultIfEmpty()
from c in db.Contact.Where(c => c.InfoID == a.ID && c.ContactTypeID == 59 && c.LogicalDelete == false).DefaultIfEmpty()
where
select new
{
a.ID,
a.LastName,
a.FirstName,
a.MiddleName,
Email = b==null? "" : b.Values,
Cellphone = c==null? "" : c.Values,
}).ToList();
您正在使用DefaultIfEmpty方法,因此对象b或c可能为null。