是否有更干净的方法来设置此匿名类属性?
-
30-09-2019 - |
题
我正在返回一个匿名课程:
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
那里。
不隶属于 StackOverflow