OneDrive-ohjelmointirajapinnan avulla voit luetteloida yli 200 kohdetta kansiossa

Sivu päivitetty :
Sivun luontipäivämäärä :

Toimintaympäristö

Visuaalinen studio
  • Visual Studio 2022
.VERKKO
  • .NET 8
Microsoftin todennuksen ohjelmointirajapinta
  • 2.0 OAuth 2
Microsoft OneDrive -ohjelmointirajapinta
  • 1.0
Microsoft.Graph
  • 5.68.0
Microsoft-tilien tyypit
  • Työpaikan tai oppilaitoksen tili

Edellytykset

Visuaalinen studio
  • Yksi versioista
.VERKKO
  • Yksi versioista
Microsoftin todennuksen ohjelmointirajapinta
  • 2.0 OAuth 2
Microsoft OneDrive -ohjelmointirajapinta
  • 1.0
Microsoft.Graph
  • 5.XX
Microsoft-tilien tyypit
  • Työpaikan tai oppilaitoksen tili

Kerralla noudettavien kohteiden enimmäismäärä

Kun noudat kansion sisältöä OneDrive-ohjelmointirajapinnan avulla, kerralla noudettavien enimmäismäärä on 200. Tämä luku löytyy myös alla olevalta viralliselta verkkosivustolta.

Tämä pätee, vaikka osuisit suoraan URL-osoitteeseen, mutta Microsoft.Graph myös jos käytät kirjastoa. Seuraava koodi, joka mainittiin edellisissä vinkeissä, hakee vain 200 tulosta. Virheitä ei tapahdu, mutta voit tarkistaa, onko kohteita enemmän kuin 201, tarkistamalla,DriveItemCollectionResponse.OdataNextLink onko ominaisuuden arvo määritetty.

// フォルダ内アイテム一覧取得
var folderChildren = await graphClient.Drives[drive.Id].Items[folderItem.Id].Children.GetAsync();
if (folderChildren == null || folderChildren.Value == null)
{
  Console.WriteLine("フォルダの一覧を取得できませんでした。");
  return;
}
foreach (var item in folderChildren.Value)
{
  Console.WriteLine($"Type={(item.File != null ? "File" : "Folder")}, Id={item.Id}, Name={item.Name}, Size={item.Size}");
}

Jos haluat saada sen HTTP-pyynnöllä, sinun @odata.nextLink on käytettävä URL-osoitetta yksitellen saadaksesi sen. Microsoft.Graph Jos käytät kirjastoa, on helpompi tapa saada kaikki yli 200 kohdetta. PageIterator On olemassa luokka nimeltä , joten sinun tarvitsee vain käyttää sitä. Käytä sitä seuraavasti:

// フォルダ内アイテム一覧取得
var folderChildren = await graphClient.Drives[drive.Id].Items[folderItem.Id].Children.GetAsync();
if (folderChildren == null || folderChildren.Value == null)
{
  Console.WriteLine("フォルダの一覧を取得できませんでした。");
  return;
}

var pageIterator = PageIterator<DriveItem, DriveItemCollectionResponse>.CreatePageIterator(
      graphClient,
      folderChildren,
      (item) =>
      {
        Console.WriteLine($"Type={(item.File != null ? "File" : "Folder")}, Id={item.Id}, Name={item.Name}, Size={item.Size}");
        return true;  // false を返すまで次のアイテムを列挙します
      });
await pageIterator.IterateAsync();

Kun saat kansion kohdeluettelon vastauksen (DriveItemCollectionResponse) PageIterator.CreatePageIterator Määritä se menetelmän toiseksi argumentiksi. Kolmas argumentti on takaisinkutsu, jota kutsutaan kohdekohtaisesti, joten jos luettelet sen, sinun pitäisi pystyä saamaan kaikki kohteet.

PageIterator.CreatePageIterator Muuten, luo vain iteraatiota, joten meidän on kutsuttava metodia lopussa PageIterator.IterateAsync .