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

如何在Kendo中构建含OR与AND逻辑的复杂数据筛选器?

实现Kendo复杂筛选条件的代码修改方案

问题分析

原代码存在两个关键问题,无法实现需求中的筛选逻辑:

  • 外层筛选逻辑误用"or",会导致只要满足状态为Pending/Rejected、或DueDate符合条件任意一项就返回数据,不符合「状态满足其一且日期符合」的要求
  • DueDate的Value错误赋值为TaskGroupStatus.Pending的枚举值,完全不符合日期筛选的需求

修改后的代码

DataQueryParameters queryParameters = new DataQueryParameters();
queryParameters.Filter = new Filter()
{
    // 外层逻辑为AND:状态条件 和 日期条件必须同时满足
    Logic = "and",
    Filters = new List<Filter>()
    {
        // 第一个子筛选:状态为Pending或Rejected(OR逻辑)
        new Filter()
        {
            Logic = "or",
            Filters = new List<Filter>()
            {
                new Filter()
                {
                    Field = "TaskGroupStatus",
                    Operator = "eq",
                    Value = (int)TaskGroupStatus.Pending
                },
                new Filter()
                {
                    Field = "TaskGroupStatus",
                    Operator = "eq",
                    Value = (int)TaskGroupStatus.Rejected
                }
            }
        },
        // 第二个子筛选:DueDate大于等于当前日期
        new Filter()
        {
            Field = "DueDate",
            Operator = "gte",
            Value = DateTime.Now.Date // 若需要包含时间维度,可直接使用DateTime.Now,根据业务需求调整
        }
    }
};

逻辑说明

  • 外层Filter使用"and"逻辑,确保状态条件组和日期条件必须同时成立
  • 状态条件组通过内层"or"逻辑,实现「TaskGroupStatus为Pending 或 Rejected」的判断
  • DueDate的Value替换为当前日期(DateTime.Now.Date仅保留日期部分,DateTime.Now包含时间),匹配「大于等于当前日期」的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:52:07