You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Regex.Escape抛出ArgumentNullException异常的解决方法问询

你遇到的语法报错是因为C#插值字符串中冒号:会默认被识别为值的格式说明符,和三元运算符的语法冲突,必须将整个三元表达式用小括号包裹才能正常解析。

你不需要引入额外变量,直接用空合并运算符??即可满足需求,在搜索字段为null时给Regex.Escape传入空字符串,避免触发空参数异常:

var recipientFirstNameFilter = BuildFilterDefinition(
    Builders<Transaction>.Filter.Regex(
        _ => _.Recipient.FirstName, 
        new($"/.*{Regex.Escape(query.RecipientFirstName ?? string.Empty)}.*/i")
    ), 
    query.RecipientFirstName
);

如果后续需要更复杂的非空判断逻辑,也可以用包裹括号的三元运算符写法:

var recipientFirstNameFilter = BuildFilterDefinition(
    Builders<Transaction>.Filter.Regex(
        _ => _.Recipient.FirstName, 
        new($"/.*{(query.RecipientFirstName != null ? Regex.Escape(query.RecipientFirstName) : string.Empty)}.*/i")
    ), 
    query.RecipientFirstName
);

因为你封装的BuildFilterDefinition方法本身已对空/空白的搜索文本做了过滤,会直接返回空过滤器,所以上述写法不会影响原有的过滤逻辑。

内容的提问来源于stack exchange,提问作者Kgn-web

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:27:03