Linq with LEFT Join


        var query =
            (from Contact con in e.Results
             from ContactPhoneNumber phn in con.PhoneNumbers
             from ContactEmailAddress email in con.EmailAddresses.DefaultIfEmpty()
             where con.DisplayName.Contains(txtContasctSearch.Text)
             select new person()
             {
                 displayName = con.DisplayName,
                 displayEmail = (email.EmailAddress == null ? String.Empty : email.EmailAddress),
                 displayPhone = phn.PhoneNumber
             }).ToList();

EmailAddress字段并不总是可用的。然而,如果它存在的话,我仍然想把它带回来。我想模仿左联接,但是上面的代码返回了一个错误。

有什么想法吗?

我收到的错误是:

 System.NullReferenceException occurred
   _HResult=-2147467261
    _message=NullReferenceException
     HResult=-2147467261
    Message=NullReferenceException
    Source=wpChoreList
    StackTrace:
       at wpChoreList.personSetup.<Contacts_SearchCompleted>b__8(<>f__AnonymousType1`2    h__TransparentIdentifier1)
   InnerException: 

您正在检查null的错误值:

displayEmail = (email.EmailAddress == null ? String.Empty : email.EmailAddress),

电子邮件应该是空的,而不是电子邮件。EmailAddress,尝试将该行更改为以下行:

displayEmail = (email == null ? String.Empty : email.EmailAddress),

相关内容

  • 没有找到相关文章

最新更新