我正在返回一个匿名课程:

var clients = from c in this.ClientRepository.SearchClientByTerm(term, 10)
    select new
    {
       id = c.Id,
       line1 = c.Address.Line1 ?? "Unknown Information ..."
    };

问题在于地址是无效的,这意味着如果它不合格,它将爆炸成一百万件。

我能想到的最优雅的解决方案是这个...

    line1 = c.Address != null && c.Address.Line1 != null 
               ? c.Address.Line1 : "Unknown Information ..."

有更好的方法吗?

有帮助吗?

解决方案

我能想到的唯一清洁方法是修改 Address 属性永远不会返回null,或者使构造函数始终初始化 Address. 。否则,您始终需要检查null。

其他提示

我只能想到这一点:

line1 = c.Address.HasValue ?  c.Address.Line1.HasValue ? c.Address.Line1 : "Line1 unknown." : "Address unknown."

您还可以修改地址属性获取{}方法以检查内容并返回适当的值,最好缓存结果,以免一遍又一遍地进行相同的检查。

我会 ClientRepository.SearchClientByTerm() 返回初始化 Address (可能)设置 Line1 那里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top