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

WebAPI搜索功能如何移除大小写敏感性?

这个问题本质是字符串匹配的大小写敏感性在搞鬼~ 你只需要调整Where子句里的判断逻辑,让它忽略大小写就能解决啦。

方法一:使用Contains的重载指定不区分大小写

这是推荐的最优方式,直接给Contains方法传入StringComparison.OrdinalIgnoreCase参数,性能更好还能避免区域文化差异带来的问题:

public IHttpActionResult GetItems(string name) 
{
    // 先处理name为空的情况,避免空引用异常
    if (string.IsNullOrEmpty(name))
    {
        return Ok(new List<Item>()); // 或者返回全部条目,看你的业务需求
    }
    
    List<Item> allItems = GetAllItems();
    return Ok(allItems.Where(i => i.Name.Contains(name, StringComparison.OrdinalIgnoreCase)));
}

方法二:统一转换为小写(或大写)后比较

如果你用的是较老的.NET版本,Contains没有上述重载的话,可以把两边字符串都转成不变文化的小写(或大写)再判断:

public IHttpActionResult GetItems(string name) 
{
    if (string.IsNullOrEmpty(name))
    {
        return Ok(new List<Item>());
    }
    
    List<Item> allItems = GetAllItems();
    var targetName = name.ToLowerInvariant();
    return Ok(allItems.Where(i => i.Name.ToLowerInvariant().Contains(targetName)));
}

小提醒:

  • 优先选第一种方法,StringComparison.OrdinalIgnoreCase是.NET专门为不区分大小写的字符串操作优化的,比手动转大小写更高效,还能避免某些语言特殊字符转大小写的意外问题。
  • 一定要记得处理name为null或空字符串的情况,不然容易触发空引用异常哦。

内容的提问来源于stack exchange,提问作者Jacob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:31:49