2015-02-12 66 views
-4
var userDomain = (from a in this.db.DomainList.ToList() 
          join b in this.db.UserDomain.ToList() on a.DomainId equals b.UserDomainId 
          where b.UserId == new System.Guid(user.ProviderUserKey.ToString()) 
          select new 
          { 
           a.DomainId, 
           a.DomainName 
          }).FirstOrDefault(); 

string userDomainName = (userDomain.DomainName ?? "None").ToString(CultureInfo.InvariantCulture); 

我有上面的示例代碼。當USERDOMAIN爲空,我想設置用戶域名varibale爲「無」,如果別的USERDOMAIN不爲空,用戶域名變量應設置爲userDomain.DomainName如何正確檢查和處理空值或對象

我曾嘗試下面的代碼行

string userDomainName = (userDomain.DomainName ?? "None").ToString(CultureInfo.InvariantCulture); 

但也不不起作用,因爲它會拋出錯誤

未將對象引用設置爲對象的實例。

if userDomain is null。

回答

3

是的,如果userDomainnull,然後

userDomain.DomainName 

將失敗。

在C#6,你可以在此與空條件運算符:

C#6之前,您需要:

string userDomainName = 
    (userDomain == null ? null : userDomain.DomainName) ?? "None"; 

這是假設它是possilble爲userDomain成非空和userDomain.DomainName爲空 - 如果不是,則可以使用:

string userDomainName = userDomain == null ? "None" : userDomain.DomainName; 

請注意,你不需要ToString部分 - 調用ToString(CultureInfo.InvariantCulture)上的字符串永遠不會改變它。

+0

謝謝,這是我想要的。 – StackTrace 2015-02-12 08:20:18