我正在尝试执行 LINQ to objects 查询,如下所示:
var c1 = allCustomers
.Where(x => x.CompanyName.Replace("'", "").StartsWith(searchText))
.ToList();
只要 CompanyName 不为空,这就可以正常工作。
所以,我认为这似乎是新的 null 条件运算符的完美位置!只需更改为:
var c1 = allCustomers
.Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText))
.ToList();
一切都应该正常!
相反,我得到了错误:
Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?)
我不太确定如何在这里完成我想要的。在这种情况下我将如何使用 null 条件?
最佳答案
您需要一个合并运算符将三态转换为适当的 bool 值。
var c1 = allCustomers
.Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText) ?? false)
.ToList();
我称 bool?
为三态,因为它可以有三个值:true
、false
和 null
;因此,将 bool?
转换为 bool
是一个缩小转换,需要显式处理。
关于c# - 如何使用条件空运算符来检查空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36804926/