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

如何为DataGrid的ICollectionView实现逗号分隔多值动态过滤

多值过滤实现方案

首先修正分割代码的问题:当前代码将同一个filterText重复分割给四个列表,这不符合多值过滤逻辑。我们需要先统一处理输入的过滤关键词,分割后清理无效值并统一转小写,避免大小写敏感问题。

修正后的分割处理

// 分割过滤文本,清理空字符串,统一转小写
var filterKeywords = filterText.Split(',')
                              .Select(s => s.Trim().ToLower())
                              .Where(s => !string.IsNullOrEmpty(s))
                              .ToList();

多值过滤逻辑实现

构建过滤谓词,逻辑为:数据项的任意字段(Name/SchoolName/Gender/Class)只要包含任意一个过滤关键词,就保留该数据项。

// 构建多值过滤谓词
yourCostumFilter = new Predicate<object>(x =>
{
    var item = (View)x;
    // 检查当前项的所有字段是否匹配任意关键词
    return filterKeywords.Any(keyword =>
        item.Name.ToLower().Contains(keyword) ||
        item.SchoolName.ToLower().Contains(keyword) ||
        item.Gender.ToLower().Contains(keyword) ||
        item.Class.ToLower().Contains(keyword)
    );
});

// 应用过滤到ICollectionView并刷新
view.Filter = yourCostumFilter;
view.Refresh();

补充说明

  • 添加Trim()是为了处理用户输入时的空格(比如"张三, 李四"),避免无效空格影响匹配。
  • 如果需要每个字段对应专属多值过滤(比如NameList对应Name字段的多个值),需调整输入格式(比如用分号区分字段组:张三,李四;一中,二中;男;三班,四班),再按字段拆分对应列表后分别匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:55:18