C#搜索问题:无法按标题关键词随机顺序筛选帖子
问题分析与修复方案
你的标题筛选逻辑失效,核心问题出在关键词拆分后的空字符串处理上:
问题根源
当输入的搜索短语包含多个空格,或是纯空格/空字符串时,filtro.Titolo.Split(" ").ToList()会生成带空字符串的列表。而string.Contains("")永远返回true,导致titoloDiviso.All(...)变成永真条件,直接跳过标题筛选,返回所有符合其他条件的帖子。
修复代码
修改标题拆分逻辑,过滤掉空字符串和纯空白元素:
List<string> titoloDiviso = filtro.Titolo != null ? filtro.Titolo.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries).ToList() : new List<string>();
同时,补充处理用户输入全空格的场景,确保筛选逻辑严谨:
&& (filtro.Titolo == null || string.IsNullOrWhiteSpace(filtro.Titolo) || titoloDiviso.All(t => p.Titolo!.ToLower().Contains(t.ToLower())))
额外优化
可以提前统一转小写,避免重复执行字符串转换:
List<string> titoloDiviso = filtro.Titolo != null ? filtro.Titolo.ToLower().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries).ToList() : new List<string>();
筛选时简化为:
titoloDiviso.All(t => p.Titolo!.ToLower().Contains(t))
内容的提问来源于stack exchange,提问作者Saverio Gramegna
相关产品推荐
相关产品推荐

