簡體   English   中英

如何使用條件空運算符檢查空字符串?

[英]How can I use the conditional null operator to check for null string?

我試圖執行LINQ到對象查詢,如下所示:

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條件?

您需要合並運算符將三態轉換為適當的布爾值。

var c1 = allCustomers
    .Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText) ?? false)
    .ToList();

我叫bool? 三態,因為它可以具有三個值: truefalsenull 因此,轉換bool? 轉化為bool是一種狹窄的轉化,需要進行明確的處理。

您需要更多問號! 我認為您也需要空合並,因為x.CompanyName?.Replace現在也可以返回空。

(x.CompanyName?.Replace("'", "") ?? string.Empty).StartsWith(searchText))

?? string.empty ?? string.empty強制將其設置為非null字符串,該字符串現在支持.startswith

使用?? 運算子,例如:

Where(x => x.CompanyName?.Replace("'", "").StartsWith(searchText) ?? false)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM