连接具有相同ID的2列时出现NullReferenceException
本文关键字:2列 NullReferenceException ID 连接 | 更新日期: 2023-09-27 17:59:27
情况是,我加入了两个ID相同的列,最终得到了一个单列表,我的问题是一些信息没有联系人,所以这行(b => b.InfoID == a.ID)
返回null或false,并显示NullReferenceException
错误,有人能帮我解决Linq中的问题吗??
这是之前我的表格显示的内容
| Name | Address | Cellphone | Email |
| John | NY | n/a | johndoe@y.c |
| John | NY | 123456781 | n/a |
我希望我的输出是一个线性组合
| Name | Address | Cellphone | Email |
| John | NY | 123456781 | johndoe@y.c |
这是我的Linq,它显示Joined表,但当Info
还没有Contact时,它会返回NullReferenceError
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.Values,
Cellphone = c.Values,
}).ToList();
您应该检查b或c对象是否为null或与此不同
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。