c# - 如何使用条件空运算符来检查空字符串?

标签 c# linq-to-objects null-conditional-operator

我正在尝试执行 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? 为三态,因为它可以有三个值:truefalsenull;因此,将 bool? 转换为 bool 是一个缩小转换,需要显式处理。

关于c# - 如何使用条件空运算符来检查空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36804926/

相关文章:

linq-to-sql - LINQ根据日期数组查询记录

.net - 您最喜欢的LINQ到对象的查询

c# - 使用空条件运算符检查可能为空的对象的值

方法参数的 C# null 条件简写

c# - 当 null 条件运算符短路时,它是否仍然评估方法参数?

C# 对象声明

c# - ODAC/Oracle 等同于 Linq to Entities GroupBy FirstOrDefault

c# - 日期时间和 CultureInfo

c# - Sqlite - 连接数据库失败

c# - 解析 XElement