2013-02-10 59 views
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字段并不总是可用。但是,如果存在,我仍然希望将其还原。我想模仿一个左连接,但是,上面的代码返回一个错误。Linq with LEFT加入

任何想法?

我收到的错误是:

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: 
+3

_What没有错误说_ – SLaks 2013-02-10 14:33:47

+0

我建议你先看看这个问题 - HTTP:// stackoverf low.com/questions/700523/linq-to-sql-left-outer-join – 2013-02-10 14:34:32

回答

2

您要为空检查错误值:

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

电子邮件应该是空的,没有email.EmailAddress,请尝试更改该行本之一:

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

就是这样!当这样简单的事情...谢谢。只要它允许我,我会尽快答复。 – webdad3 2013-02-10 14:41:06