连接具有相同ID的2列时出现NullReferenceException

时间:2014-04-22 03:31:04

标签: c# sql linq sql-server-2008

情况是我正在加入具有相同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

1 个答案:

答案 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。