【问题标题】:How to FilterItems by Contains如何按包含过滤项目
【发布时间】:2019-05-27 01:18:58
【问题描述】:

如果我有文本字段的确切字符串,我可以收集项目,但如果我在文本字段中有部分字符串,我需要收集项目。

这是我用于完全匹配的代码...

public static async Task<int> Items_With_String(int appId, string textFieldId, string stringToSearch)
{

    var filter = new Dictionary<string, string>
    {
        {textFieldId, stringToSearch }
    };

    var filteredItems = await Program.podio.ItemService.FilterItems(appId: appId, filters: filter);

    foreach (var item in filteredItems.Items)
    {
        Console.WriteLine($"{stringToSearch} found in {item.Title}");
    }

    return filteredItems.Total;
}

【问题讨论】:

    标签: c# podio


    【解决方案1】:

    您可以使用搜索功能来代替 FilterItems。

    您可以参考下面的链接了解更多信息。

    https://developers.podio.com/doc/search/search-in-app-4234651

    请看样例

                    bool isContinue = true;
                    var limit = 0;
                    var offSet = 0;
                    while (isContinue)
                    {
                        var items = podio.SearchService.SearchInApp(appId, stringToSearch, limit, offset);
                        offSet = offSet + limit;
                        limit = limit + 100;
                        isContinue = // check if you have value;
                    }
    

    【讨论】:

    • 感谢您的链接。不幸的是,Podio api 文档只提供了 PHP 和 Ruby 的示例。我希望有更好的 C# 信息。我经常使用http://podio.github.io/podio-dotnet/,但它不包括我读过的搜索功能。可以提供样品吗?
    • @Xiolin 如果部分搜索 API 方法在 nuget 中不可用,那么也许您可以尝试在从同一 api 收到的内容之上应用搜索。它效率不高,但可以完成工作。
    • 我可以帮您提供一个示例,我会尽快用示例代码更新我的答案,可能会在 3 小时内完成
    • 我更新了一个示例代码,没有检查功能。希望对你有帮助
    • 测试过了。 SearchService 搜索所有内容。全球搜索。它不会返回它在哪个字段中找到了该字符串,但如果该字符串足够独特,它就可以解决问题。谢谢。
    【解决方案2】:

    你实际上并没有提供FilterItems方法的实现。

    但通常对于部分匹配,您可以使用linq 查询并添加where 带有谓词的子句进行部分匹配。这里我给你一个样本 它的外观如何,因此您可以将其用于您的列表和过滤器属性。

    string filter = "something";
    List<MyClass> myList = new List<MyClass>();
    // add items to the list
    myList.Where(item => item.Contains(filter));
    // or for the partial match with a shared beginning
    myList.Where(item => item.StartsWith(filter));
    

    希望这对您的情况有所帮助。

    【讨论】:

    • FilterItems 是一个来自 nuget 包的方法,它会进行一些 api 调用
    • @AkbarBadhusha 好吧,我不确定您的过滤器是什么类型,但可能您可以将某种谓词传递给它。类似于我发布的手动方式。可能不完全是 linq 谓词,但可能是一个组成的条件类。
    • FilterItems 方法用于从 PODIO 中获取具有特定值的项目。对于部分搜索,还有另一个称为搜索的 API 调用。我已将其添加为上面的答案。只是想让您知道提出这个问题的人没有实施 FilterItems。它是 Podio 库 nuget 包中的一个方法。
    • 感谢 Akbar 的澄清。我标记了 Podio,但我应该在问题中提到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2015-11-23
    • 2020-01-02
    • 2015-03-16
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多