StorageFolderQueryResult StorageFolderQueryResult StorageFolderQueryResult StorageFolderQueryResult StorageFolderQueryResult Class


Provides access to the results of a query that lists the folder (or file groups) in the folder being queried (which is represented by a storageFolder ). You can use a storageFolderQueryResult to enumerate folders or file groups in that folder.

public : sealed class StorageFolderQueryResult : IStorageQueryResultBase
struct winrt::Windows::Storage::Search::StorageFolderQueryResult : IStorageQueryResultBase
public sealed class StorageFolderQueryResult : IStorageQueryResultBase
Public NotInheritable Class StorageFolderQueryResult Implements IStorageQueryResultBase
// This class does not provide a public constructor.

Windows 10 requirements

Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)


This example demonstrates how to get a list folders (or file groups) from a storageFolderQueryResult object.

// Get the Pictures library
Windows.Storage.StorageFolder picturesFolder = Windows.Storage.KnownFolders.PicturesLibrary;

// Set query options to create groups of files within result
QueryOptions queryOptions = new QueryOptions(Windows.Storage.Search.CommonFolderQuery.GroupByMonth);

// Create query and retrieve result
StorageFolderQueryResult queryResult = picturesLibrary.CreateFolderQueryWithOptions(queryOptions);
IReadOnlyList<StorageFolder> folders = await queryResult.GetFoldersAsync();
// Process file groups
foreach (StorageFolder folder in folders)
    // Get and process files in group
    IReadOnlyList<StorageFile> fileList = await folder.GetFilesAsync();
    OutputPanel.Children.Add(CreateHeaderTextBlock(folder.Name + " (" + fileList.Count + ")"));
    foreach (StorageFile file in fileList)
        // Process file

// Get the Pictures library, then rearrange it by month
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

// Set query options to create groups of files within result
var queryOptions = new QueryOptions(Windows.Storage.Search.CommonFolderQuery.GroupByMonth);

// Create query and retrieve result
var queryResult = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth);
queryResult.getFoldersAsync().done(function(folders) {
    // Process file groups (or folders)

    // Create an array of promises that will asynchronously
    // retrieve the files for each file group
    var promises = (folder) {
        return folder.getFilesAsync();

    // Aggregate the results of multiple asynchronous operations
    // so that they are returned after all are completed. This
    // ensures that the groups are displayed in order.
    WinJS.Promise.join(promises).done(function (folderContents) {
        // Process the contents of each file group (or folder)

        for (var i in folderContents) {
            // Process the group/folder at index i of folderContents

            // Display the group name
            var group = outputResultGroup(folders.getAt(i).name);
            // Display the items in the group 
            outputItems(group, folderContents[i]);

The queryResult variable gets the storageFolderQueryResult that is used to retrieve file groups (or folders) that meet the criteria of the query.


You need the Pictures library capability to access the library using KnownFolders.PicturesLibrary. To learn more about capabilities and file access, see File access permissions.



Although it's not attributed with marshalling_behavior(agile), this class can be treated as agile. For more info, see Threading and Marshaling (C++/CX).

You can get a storageFolderQueryResult object by calling the following methods from a storageFolder or a folderInformation object:

For more code examples that show you how to use storageFolderQueryResult objects, see the Folder enumeration sample.

To get a StorageFolderQueryResult object to enumerate the folders or file groups in a location, you must get a storageFolder that represents the location and then create a folder query


Folder Folder Folder Folder Folder

Gets the folder originally used to create the StorageFolderQueryResult object. This folder represents the scope of the query.


ApplyNewQueryOptions(QueryOptions) ApplyNewQueryOptions(QueryOptions) ApplyNewQueryOptions(QueryOptions) ApplyNewQueryOptions(QueryOptions) ApplyNewQueryOptions(QueryOptions)

Modifies query results based on new QueryOptions.

FindStartIndexAsync(Object) FindStartIndexAsync(Object) FindStartIndexAsync(Object) FindStartIndexAsync(Object) FindStartIndexAsync(Object)

Retrieves the index of the folder from the query results that most closely matches the specified property value. The property that is matched is determined by the first SortEntry of the QueryOptions.SortOrder list.

GetCurrentQueryOptions() GetCurrentQueryOptions() GetCurrentQueryOptions() GetCurrentQueryOptions() GetCurrentQueryOptions()

Retrieves the query options used to determine query results.

GetFoldersAsync() GetFoldersAsync() GetFoldersAsync() GetFoldersAsync() GetFoldersAsync()

Retrieves a list of all the folders (or file groups) in the result set.

GetFoldersAsync(UInt32, UInt32) GetFoldersAsync(UInt32, UInt32) GetFoldersAsync(UInt32, UInt32) GetFoldersAsync(UInt32, UInt32) GetFoldersAsync(UInt32, UInt32)

Retrieves folders (or file groups) in a specified range.

GetItemCountAsync() GetItemCountAsync() GetItemCountAsync() GetItemCountAsync() GetItemCountAsync()

Retrieves the number of folders (or file groups) in the set of query results.


ContentsChanged ContentsChanged ContentsChanged ContentsChanged ContentsChanged

Fires when a file is added to, deleted from, or modified in the folder being queried. This event only fires after GetFilesAsync has been called at least once.

OptionsChanged OptionsChanged OptionsChanged OptionsChanged OptionsChanged

Fires when the query options change.

See also