如何在 "github.com" 中进行类似搜索?

How to make a similar search in "github.com"?

二手 - "octokit.net".
我对按语言搜索 "repositories"、"users" 和过滤结果很感兴趣。

场景:
1. 用户。输入搜索短语;
2. 网站。执行搜索;
3. 网站。显示结果:
一种。存储库;
b.用户;
过滤器:
- 语言;

点击"repositories"或"users"按钮后,结果显示在table。
点击语言后(例如,"C #"),筛选结果。

一般搜索结果:
存储库
- 存储库 - 108,951 个结果
- C#(存储库)- 4,315 个结果
用户
- 用户 - ~ 4K
- C#(用户)- ~ 72

如何重复这个脚本搜索引擎?
我写了初步代码,但我不明白如何让它更正确地工作。

方法未完成"searchUser (string searchQuery_str)"。
我打算通过类比“SearchReposit (string searchQuery_str, string lang_str)”

当前代码逻辑:
- 搜索所有存储库:
- 发送请求;
- 我们收到了答复;
- 在使用 C# 的存储库中搜索:
- 发送请求;
- 我们按语言过滤请求 "C #";
- 我们收到了答复;
那些。现在正在为每个案例执行一个单独的请求(var 请求),但在我看来,您需要执行一个请求,然后对其执行以下操作:
- 过滤器;
- 排序;
- 清除过滤;
- 清除排序。

问题是:如何使执行一个请求成为可能,然后对其执行以下操作:
- 过滤器;
- 排序;
- 清除过滤;
- 清除排序
- 计算搜索结果的数量?

我对逻辑的理解是否正确,是否可以这样做?

如果我理解正确,搜索 "users" 的工作将类似于搜索 "repositories"。

Link 搜索文档 - Link

enter image description here
enter image description here

private async void button1_Click(object sender, EventArgs e)
{
    // Получаем поисковую фразу
    string searchQuery_str = Search_txB.Text;
    string lang_str;
      
    // Поиск по репозитариям. "Результат"
    lang_str = "";
    var countRepo = await SearchReposit(searchQuery_str, lang_str);
 
    label5.Text = countRepo;
 
    // Поиск по репозитариям. "Результат"
    lang_str = "C#";
    var countRepoLang = await SearchReposit(searchQuery_str, lang_str);
 
    label7.Text = countRepoLang;
}
 
public async Task<string> SearchReposit(string searchQuery_str, string lang_str)
{
    // Поиск по "Реозитариям"
    var request = new SearchRepositoriesRequest(searchQuery_str); // mvc client side framework - Структура клиентской стороны mvc           
 
    switch (lang_str)
    {
       case "C#":
           request.Language = Language.CSharp;
           break;                
    }
 
    var resultRepo = await client.Search.SearchRepo(request);
 
    // Количество репозитариев
    decimal countRepo_dec = Convert.ToDecimal(resultRepo.TotalCount);
 
    // Количество репозитариев. Форматирование
    string countRepo_str = formatValue(countRepo_dec);
 
    return countRepo_str;            
}
 
// Поиск по "Пользователям" ()
public async void searchUser(string searchQuery_str)     
{        
    var request = new SearchUsersRequest(searchQuery_str); // _____
 
    var resultUser = await client.Search.SearchUsers(request);
 
    label6.Text = resultUser.TotalCount.ToString();
    // var resultUsers = await client.Search.SearchUsers(request);
}

更改了变量 request:
- 是 var - 变成了 SearchRepositoriesRequest;
- 是 local - becameglobal`;

改变了方法"SearchReposit (string searchQuery_str, string lang_str)"
- 添加了参数 "bool null_flg" - 变成了 "SearchReposit (string searchQuery_str, string lang_str, bool null_flg)";
- 添加了检查 "bool null_flg";

if (null_flg == false)
{
request = new SearchRepositoriesRequest (searchQuery_str);
}

代码如下所示

SearchRepositoriesRequest request;
    public async Task<string> SearchReposit(string searchQuery_str, string lang_str, bool null_flg)
            {
                //SearchRepositoriesRequest request = new SearchRepositoriesRequest();
                // Поиск по "Реозитариям"
                // if (request == null) // ошб
                if (null_flg == false)
                {
                     request = new SearchRepositoriesRequest(searchQuery_str); // mvc client side framework - Структура клиентской стороны mvc           
                    // return request; 
                }

                switch (lang_str)
                {
                   case "C#":
                       request.Language = Language.CSharp;
                       break;                
                }

                var resultRepo = await client.Search.SearchRepo(request);

                // Количество репозитариев
                decimal countRepo_dec = Convert.ToDecimal(resultRepo.TotalCount);

                // Количество репозитариев. Форматирование
                string countRepo_str = formatValue(countRepo_dec);

                return countRepo_str;            
            }


    private async void button1_Click(object sender, EventArgs e)
            {
                // Получаем поисковую фразу
                string searchQuery_str = Search_txB.Text;
                string lang_str;
                bool null_flg;


                // Поиск по репозитариям. "Результат"
                lang_str = "";
                null_flg = false;
                var countRepo = await SearchReposit(searchQuery_str, lang_str, null_flg);
                null_flg = true;

                label5.Text = countRepo;

                // Поиск по репозитариям. "Результат"            
                lang_str = "C#";
                var countRepoLang = await SearchReposit(searchQuery_str, lang_str, null_flg);

                label7.Text = countRepoLang;

            }

这是一个正常的决定还是可以做出更有效的决定?