亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您可以使用原始 graphQL 語法使用 octokit.net 庫在 C# 中查詢

您可以使用原始 graphQL 語法使用 octokit.net 庫在 C# 中查詢

C#
郎朗坤 2023-09-16 19:59:35
我正在嘗試使用 graphQL 來查詢存儲庫及其內容,但無法弄清楚如何在 LinQ 中構建所需的查詢。有什么方法可以執行原始 GraphQL 查詢而不使用 LinQ 語法嗎?我的函數GraphQL查詢如下所示:{  repositoryOwner(login: "userLogin") {    repositories(first: 99) {      nodes {        name        rootFolder: object(expression: "master:") {          id          ... on Tree {            entries {              name              object {                ... on Blob {                  byteSize                }              }            }          }        }      }    }  }}使用LinQ語法我得到了這一點:var query = new Query()   .RepositoryOwner("userLogin")   .Repositories(first: 99)   .Nodes.Select(repo => new   {       repo.Name   }).Compile();var result = await connection.Run(query);我找不到在 Blob 選擇器上實現這些的方法編輯:Cyril Durand的答案有效,但不幸的是沒有使用 Octokit.net 客戶端,因此您無法將結果解析為上述庫中包含的類。您可以做的是創建自定義類以完全適合 json 結果。首先你查詢數據。var result = await Connection.PostQueryAsync(@"{    user(login: """ + userName + @""") {      login      avatarUrl    }   }");然后將其設為 JSON 字符串。(需要Newtonsoft.Json庫)string JsonString = result.Data.user.ToString(Formatting.None);并且您使用json2csharp轉換器,它使用 JSON 字符串中的屬性創建精確的類。對于此查詢,生成的類如下所示class User{    public string login { get; set; }    public string avatarUrl { get; set; }}現在您可以使用您的數據。這種方法不是最好的,但解決了我的大部分查詢問題,因此我將其標記為正確答案。如果您有更好的解決方案的想法(也許您可以實際使用 octokit 庫),請隨時回答:)
查看完整描述

1 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

您可以使用GraphQl.Clientnuget 包并使用原始 graphql 查詢:

var client = new GraphQLClient("https://api.github.com/graphql");

client.DefaultRequestHeaders.Add("Authorization", $"bearer {token}");

client.DefaultRequestHeaders.Add("User-Agent", userLogin );

var result = await client.PostQueryAsync(@"{

? repositoryOwner(login: """ + userLogin + @""") {

? ? repositories(first: 99) {

? ? ? nodes {

? ? ? ? name

? ? ? ? rootFolder: object(expression: ""master:"") {

? ? ? ? ? id

? ? ? ? ? ... on Tree {

? ? ? ? ? ? entries {

? ? ? ? ? ? ? name

? ? ? ? ? ? ? object {

? ? ? ? ? ? ? ? ... on Blob {

? ? ? ? ? ? ? ? ? byteSize

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? }

? ? ? ? }

? ? ? }

? ? }

? }

}");

然后使用類似的方法訪問結果:


var size = result.Data.repositoryOwner.repositories.nodes[0].rootFolder.entries[0][email protected];



查看完整回答
反對 回復 2023-09-16
  • 1 回答
  • 0 關注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號