在复杂where子句中使用 String.StartsWith() 时如何处理空值?
var value = _context.Repo.Pages.Where(r => r.Sdate <= data.Pdate && (r.Edata == null || data.RData <= r.Edata)
&& ......
&& ...... several conditions
&& ......
|| (data.SisPlan.StartsWith("T") && r.SisN == data.SisCal));
Run Code Online (Sandbox Code Playgroud)
我试过了,data?.SisPlan.StartsWith("T")但收到消息:
运算符“&&”不能应用于“bool?”类型的操作数 和“布尔”
我试图防止在where子句之外进行空检查。
通常的写法是:
|| ((data?.SisPlan?.StartsWith("T") ?? false) && r.SisN == data.SisCal));
Run Code Online (Sandbox Code Playgroud)
我们依靠??运算符来获取空情况,在这种情况下我们返回一个假值。在??被称为空合并运算符。
基本上,
var a = data?.SisPlan?.StartsWith('T') ?? false;
Run Code Online (Sandbox Code Playgroud)
是语法糖
bool a = false;
if (data != null && data.SisPlan != null && data.SisPlan.StartsWith('T'))
a = true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |