فولڈر میں 200 سے زیادہ آئٹمز کی گنتی کرنے کے لئے ون ڈرائیو اے پی آئی استعمال کریں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

آپریٹنگ ماحول

Visual Studio
  • Visual Studio 2022
.جال
  • .NET 8
Microsoft Authentication API
  • 2.0 اوتھ 2
Microsoft OneDrive API
  • 1.0
Microsoft.Graph
  • 5.68.0
مائیکروسافٹ اکاؤنٹس کی اقسام
  • کام یا اسکول کا اکاؤنٹ

ضروری شرائط

Visual Studio
  • ورژن میں سے ایک
.جال
  • ورژن میں سے ایک
Microsoft Authentication API
  • 2.0 اوتھ 2
Microsoft OneDrive API
  • 1.0
Microsoft.Graph
  • 5.XX
مائیکروسافٹ اکاؤنٹس کی اقسام
  • کام یا اسکول کا اکاؤنٹ

اشیاء کی زیادہ سے زیادہ تعداد جو ایک وقت میں بازیافت کی جاسکتی ہیں

ون ڈرائیو اے پی آئی کے ساتھ کسی فولڈر کے مندرجات کو بازیافت کرتے وقت ، زیادہ سے زیادہ تعداد جو ایک وقت میں بازیافت کی جاسکتی ہے وہ 200 ہے۔ یہ اعداد و شمار نیچے دی گئی سرکاری ویب سائٹ پر بھی پایا جا سکتا ہے۔

اگر آپ براہ راست یو آر ایل کو مارتے ہیں تو بھی یہ سچ ہے ، لیکن Microsoft.Graph اگر آپ لائبریری استعمال کرتے ہیں تو بھی۔ مندرجہ ذیل کوڈ ، جس کا ذکر پچھلے نکات میں کیا گیا تھا ، صرف 200 نتائج کو بازیافت کرتا ہے۔ کوئی غلطی نہیں ہوگی ،DriveItemCollectionResponse.OdataNextLink لیکن آپ یہ چیک کرکے چیک کرسکتے ہیں کہ آیا جائیداد کی قیمت مقرر ہے یا نہیں۔

// フォルダ内アイテム一覧取得
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}");
}

اگر آپ اسے ایچ ٹی ٹی پی درخواست کے ذریعہ حاصل کرنا چاہتے ہیں تو ، آپ @odata.nextLink کو اسے حاصل کرنے کے لئے ایک ایک کرکے یو آر ایل تک رسائی حاصل کرنے کی ضرورت ہے۔ Microsoft.Graph اگر آپ لائبریری استعمال کر رہے ہیں تو ، 200 سے زیادہ اشیاء حاصل کرنے کا ایک آسان طریقہ ہے۔ PageIterator ایک کلاس ہے ، لہذا آپ کو صرف اس کا استعمال کرنا ہے۔ اسے مندرجہ ذیل کے طور پر استعمال کریں:

// フォルダ内アイテム一覧取得
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();

ایک بار جب آپ کو فولڈر آئٹم فہرست کا جواب مل جاتا ہے (DriveItemCollectionResponse) PageIterator.CreatePageIterator اسے طریقہ کار کی دوسری دلیل کے طور پر بیان کریں۔ تیسری دلیل کال بیک ہے ، جسے آئٹم بائی آئٹم کی بنیاد پر بلایا جاتا ہے ، لہذا اگر آپ اسے فہرست کرتے ہیں تو ، آپ کو تمام آئٹمز حاصل کرنے کے قابل ہونا چاہئے۔

PageIterator.CreatePageIterator ویسے، صرف ایک تکرار پیدا کر رہا ہے، لہذا ہمیں آخر PageIterator.IterateAsync میں طریقہ کار کو بلانے کی ضرورت ہے.