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.EmailAddress ではなく、email を空にする必要があります。その行を次のように変更してみてください。

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