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

使用ZendeskApi_v2库获取前10条搜索结果时遇到异常

ZendeskApi_v2 限制搜索工单结果数量的正确方法

问题描述

使用ZendeskApi_v2库与Zendesk API交互获取特定用户工单时,尝试在搜索查询中添加limit或per_page参数来限制返回前10条结果,未达预期:要么返回少量过时记录,要么无结果;移除这些参数后可获取完整结果列表,但无法限制数量。

现有简化代码:

private void SearchTickets(string submitter, int limit = 10)
{    
    string searchTerm = $"submitter:{submitter} order_by:created sort:desc";    

    // 尝试的错误方式:把limit放到搜索字符串里
    string limitedSearchTerm = $"{searchTerm} limit:{limit}";
    var results = _api.Search.SearchFor<Ticket>(limitedSearchTerm);

    Console.WriteLine(results.Count);    
}

问题原因

Zendesk Search API的limit/per_page是请求级别的查询参数,不属于搜索字符串的语法范畴。将这些参数写入搜索词中,会被API解析为搜索条件的一部分(比如尝试匹配包含"limit:10"的工单内容),自然无法得到正确的分页/限制效果。

解决方案

使用ZendeskApi_v2库中SearchFor方法的重载版本,通过SearchOptions对象或直接传递分页参数来设置结果数量,而非将参数嵌入搜索字符串。

修改后的代码示例

private void SearchTickets(string submitter, int limit = 10)
{    
    string searchTerm = $"submitter:{submitter} order_by:created sort:desc";    

    // 正确方式:通过SearchOptions设置每页数量和页码
    var searchOptions = new SearchOptions
    {
        PerPage = limit, // 每页返回的结果数
        Page = 1         // 获取第一页,即最新的前10条
    };

    var results = _api.Search.SearchFor<Ticket>(searchTerm, searchOptions);

    Console.WriteLine(results.Count);    
}

补充说明

  • 若使用的ZendeskApi_v2版本支持直接传递perPage参数,也可简化为:
    var results = _api.Search.SearchFor<Ticket>(searchTerm, perPage: limit);
    
  • order_by:created sort:desc确保返回结果按创建时间倒序排列,结合PerPage=10和Page=1即可获取最新的10条工单。
  • 避免在搜索字符串中添加limit:或per_page:这类语法,此类参数仅作为请求参数传递才会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:18:14