# Collection Types

This topic covers all the different collection types of DataCollection.

## Content



The **DataCollection** library includes several data components that are designed for different scenarios.

*   **[C1DataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1DataCollection-1.html)**: This collection combines the most common transformations such as sorting, filtering and grouping into one.​
    
*   **[C1FilterDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1FilterDataCollection-1.html)**: This collection filters the items creating a new collection by a specified criterion.
    
*   **[C1SortDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1SortDataCollection-1.html)**: This collection sorts the items by a specified sort path and direction.
    
*   **[C1GroupDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1GroupDataCollection-1.html)**: This special collection supports data record grouping in memory. The level of grouping supported depends on the control. For instance, ListView can only display one-level of grouped data, whereas FlexGrid can show multiple levels.​
    
*   **[C1PagedDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1PagedDataCollection-1.html)**: This collection wraps another collection to be shown in pages of a maximum number of items.. This collection is a transforming collection, like C1SortDataCollection or C1FilterDataCollection.​
    
*   **[C1CursorDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1CursorDataCollection-1.html)**: This provides abstract base class implementation of IDataCollection for remote-source collection views. It also provides cursor-based data virtualization and can be used to display information from rest-services, or public services like FaceBook, Twitter, DropBox, OneDrive, Google Drive etc.​ This class is appropriate for wrapping data services that return the data in pages and give a token to get the next page.
    
*   **[C1VirtualDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1VirtualDataCollection-1.html)**: This provides abstract base class to provide page-like data virtualization. This collection view also resolves the problem of synchronizing requests and avoiding duplicates.​
    
*   **[C1EditableDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1EditableDataCollection-1.html)**: In this collection, changes made to the collection are tracked locally and aren’t committed to the source immediately. It’s similar to the .NET DataTable.
    
*   **[C1SelectDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1SelectDataCollection-2.html)**: This collection allows transforming every item into another item. It is highly useful to create a view-model collection of items.​ It allows transforming the items through a select clause.
    
*   **[C1SelectManyDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1SelectManyDataCollection-2.html)**: This collection is like C1SelectDataCollection, but every item of the original collection is converted to a range of items in the resulting collection.​
    
*   **[C1CacheDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1CacheDataCollection-1.html)**: This collection keeps a reference to the items when they are accessed. It can be used together with C1SelectDataCollection to avoid calling the selector repeatedly for the same item, and thus improve performance.​
    
*   **[C1SequenceDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1SequenceDataCollection-1.html)**: This collection allows composing a range of collection into one sequentially to be exposed as a single collection.​
    
*   **[C1WrapDataCollection](/componentone/api/services/online-datacollection/dotnet-standard-api/C1.DataCollection/C1.DataCollection.C1WrapDataCollection-1.html)**: This collection takes another collection as source to perform some specific transformation. By default, **C1WrapDataCollection** forwards everything to the source.