DocSpace-buildtools/thirdparty/onedrive-sdk-csharp-master/docs/collections.md
2020-07-10 18:37:02 +03:00

74 lines
3.2 KiB
Markdown

Collections in the OneDrive SDK for C#
=====
You can use the OneDrive SDK for C# to work with item collections in OneDrive.
## Getting a collection
To retrieve a collection, like a folder's children, you call `GetAsync`:
```csharp
await oneDriveClient
.Drive
.Items[itemId]
.Children
.Request()
.GetAsync();
```
`GetAsync` returns an `ICollectionPage<T>` implementation on success and throws a `OneDriveException` on error. For children collections, the type returned is `IChildrenCollectionPage`, which inherits `ICollectionPage<Item>`.
`IChildrenCollectionPage` contains three properties:
|Name |Description |
|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------|
|**CurrentPage** |An `IList<Item>`. |
|**NextPageRequest** |An `IChildrenPageRequest` used to get to the next page of items, if another page exists. This value will be null if there is not a next page.|
|**AdditionData** |An `IDictionary<string, object>` to any additional values returned by the service. In this case, none. |
## Adding to a collection
Some collections, like the children of a folder, can be changed. To add a folder to the children of an item, you can call the `AddAsync` method:
```csharp
var folderToCreate = new Item { Name = "New folder", Folder = new Folder() };
var newFolder = await oneDriveClient
.Drive
.Items[itemId]
.Children
.Request()
.AddAsync(folderToCreate);
```
`AddAsync` returns the created item on success and throws a `OneDriveException` on error.
## Expanding a collection
To expand a collection, you call `Expand` on the collection request object with the string value of the expand:
```csharp
var children = await oneDriveClient
.Drive
.Items[itemId]
.Children
.Request()
.Expand("thumbnails")
.GetAsync();
```
## Special collections
Some API calls will return collections with added properties. These properties will always be in the additional data dictionary. These collections are also their own objects (subclasses of `ICollectionPage<T>`) that will have these properties attached to them.
To get the delta of an item you call:
```csharp
var deltaCollectionPage = await oneDriveClient
.Drive
.Items[itemId]
.Delta(deltaToken)
.Request()
.GetAsync();
```
`IItemDeltaCollectionPage` is an `ICollectionPage<Item>` object with a `Token` property and a `DeltaLink` property. The token link can be used to pass into `Delta:` when you want to check for more changes. You can also construct a delta request with the `DeltaLink` property. The `NextPageRequest` is an `IItemDeltaRequest` to be used for paging purposes and will be null when there are no more changes.