2015-02-12 102 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