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

如何在LINQ中实现忽略大小写的文本过滤

实现VB.NET忽略大小写的过滤匹配

没问题,这个需求在日常开发里太常见了,咱们可以用几种简单的方式来修改你的代码,实现不区分大小写的筛选效果:

  • 使用StringComparison枚举的IndexOf方法
    这是最直接高效的方式,因为String.Contains本身没有直接支持忽略大小写的重载,但我们可以用IndexOf来替代,它支持指定匹配规则:

    Dim query = CsteList.Where(Function(i) i.Text.IndexOf(FilterTextBox.Text.Trim(), StringComparison.OrdinalIgnoreCase) >= 0)
    

    简单说:IndexOf返回匹配字符串的起始索引,如果没找到就返回-1,加上StringComparison.OrdinalIgnoreCase就会忽略大小写进行匹配,完全符合你的需求。

  • 统一转换为大小写后比较
    另一种直观的方式是把待匹配的文本和过滤文本都转换成小写(或大写),再用Contains比较:

    Dim filterText = FilterTextBox.Text.Trim().ToLowerInvariant()
    Dim query = CsteList.Where(Function(i) i.Text.ToLowerInvariant().Contains(filterText))
    

    这里推荐用ToLowerInvariant()/ToUpperInvariant()而不是普通的ToLower()/ToUpper(),因为后者会受系统区域文化影响,可能出现一些意外的匹配问题。

  • 使用正则表达式(适合复杂匹配场景)
    如果之后你需要更灵活的匹配规则(比如通配符),正则表达式是个不错的选择,记得要转义输入里的特殊正则字符:

    Dim filterText = FilterTextBox.Text.Trim()
    Dim query = CsteList.Where(Function(i) Regex.IsMatch(i.Text, Regex.Escape(filterText), RegexOptions.IgnoreCase))
    

    Regex.Escape()会把输入里的., *, ?这类正则特殊字符转义,避免它们被当作正则语法解析。

如果只是单纯的“包含”匹配,第一种方法是最优解,简洁又高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:04:07