如何使用条件空运算符来检查空字符串?
How can I use the conditional null operator to check for null string?
我正在尝试按如下方式执行 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 条件?
你需要更多的问号!我认为您也需要 null 合并,因为 x.CompanyName?.Replace
现在也可以 return null。
(x.CompanyName?.Replace("'", "") ?? string.Empty).StartsWith(searchText))
?? string.empty
强制将其设为非空字符串,现在支持 .startswith
您需要一个合并运算符来将三态转换为正确的布尔值。
var c1 = allCustomers
.Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText) ?? false)
.ToList();
我称bool?
为三态,因为它可以有三个值:true
、false
和null
;因此,将 bool?
转换为 bool
是一个缩小转换,需要显式处理。
使用 ??
运算符,例如:
Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText) ?? false)
我正在尝试按如下方式执行 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 条件?
你需要更多的问号!我认为您也需要 null 合并,因为 x.CompanyName?.Replace
现在也可以 return null。
(x.CompanyName?.Replace("'", "") ?? string.Empty).StartsWith(searchText))
?? string.empty
强制将其设为非空字符串,现在支持 .startswith
您需要一个合并运算符来将三态转换为正确的布尔值。
var c1 = allCustomers
.Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText) ?? false)
.ToList();
我称bool?
为三态,因为它可以有三个值:true
、false
和null
;因此,将 bool?
转换为 bool
是一个缩小转换,需要显式处理。
使用 ??
运算符,例如:
Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText) ?? false)