1
        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: 
4

1 回答 1

2

您正在检查 null 的错误值:

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

email 应该为空,而不是 email.EmailAddress,尝试将该行更改为这一行:

displayEmail = (email == null ? String.Empty : email.EmailAddress),
于 2013-02-10T14:38:37.417 回答