OneDrive-ohjelmointirajapinnan avulla voit luetteloida yli 200 kohdetta kansiossa
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
.