You need to enable JavaScript to run this app. C#如何从动态更新的列表中筛选包含指定字符串的条目
优惠活动
大模型
产品
解决方案
定价
更多

C#如何从动态更新的列表中筛选包含指定字符串的条目

果汁列表筛选功能修正方案

现有代码的问题

  • 用list.Find(x => x.Id == "Apple")的写法是单值精确匹配逻辑,Find方法只会返回第一个命中的单条数据,无法批量获取所有符合要求的条目集合
  • 匹配规则是字段完全等值判断,只能命中Id属性严格等于关键词的条目,根本匹配不到"Apple Juice -- 18 EURO"这类正文带关键词的条目
  • 没有对文本框的多行输入做拆分处理,用户输入的换行分隔关键词会被整体当成单个长字符串匹配,完全无法命中对应内容

落地实现逻辑

  • 先处理文本框输入的原始内容:按换行符拆分文本,过滤掉空白行、去除每个关键词的首尾空格,生成干净的有效关键词集合
  • 遍历全量果汁条目,只要条目的显示文本包含任意一个有效关键词,就将其纳入筛选结果,不要求字段完全等值匹配
  • 将筛选得到的条目集合绑定到独立的偏好列表控件完成展示

可直接参考的代码片段

// 拆分处理多行输入的关键词,过滤无效空白内容
var validKeywords = KeywordInput.Text
    .Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
    .Select(keyword => keyword.Trim())
    .Where(keyword => !string.IsNullOrEmpty(keyword))
    .ToList();

// 批量筛选匹配条目,忽略大小写做包含判断
var matchedItems = FullJuiceList
    .Where(entry => validKeywords.Any(keyword => 
        entry.DisplayText.Contains(keyword, StringComparison.OrdinalIgnoreCase)))
    .ToList();

// 将结果绑定到偏好列表展示
PreferListBox.DataSource = matchedItems;
PreferListBox.Refresh();

匹配规则适配说明

  • 支持用户输入多个换行分隔的偏好关键词,条目只要命中任意一个关键词就会被筛选出来
  • 匹配过程忽略大小写,支持部分内容匹配,不需要条目和关键词完全一致
  • 自动过滤用户输入的空行、多余空格,避免产生无效匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 16:24:04