簡體   English   中英

獲取按上次修改日期排序的StorageFile列表

[英]Get List of StorageFile ordered by last modified date

我正在嘗試完成一項非常簡單的任務,即以修改日期的降序從StorageFolder獲取StorageFile列表。

當前代碼檢索列表但未排序

                Task<IReadOnlyList<StorageFile>> task = folder.Result.GetFilesAsync().AsTask();
                task.Wait();
                return task.Result.Select(z => z.Name).ToArray();

StorageFile具有DateCreated的屬性,但DateModified沒有類似的屬性。

我研究了使用GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByDate)但這僅適用於Windows庫中的文件。

在WinRT中,您需要調用StorageFile.GetBasicPropertiesAsync 您將獲得的BasicProperties對象具有dateModified屬性,可以將其用於排序。 您可以在“ 文件訪問”示例的方案6中找到代碼片段。

您也可以使用自定義文件查詢而不是常見查詢之一來實現您的目標。 為此,我建議您看一下Programmatic文件搜索示例 ,並在我的免費電子書第11章“ 使用HTML,CSS和JavaScript編程Windows Store應用程序,第二版”中討論這些內容(不要讓JS專注於您-所有WinRT討論都完全適用於所有語言。

如果您遇到這種情況,可以通過初始化一個常見的自定義查詢,然后更改排序順序來創建一個簡單的自定義查詢。 為此,我對上述示例的場景1進行了修改,替換了第42行:

// initialize queryOptions using a common query
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.DefaultQuery, fileTypeFilter);

// clear all existing sorts
queryOptions.SortOrder.Clear();

// add descending sort by date modified
SortEntry se = new SortEntry();
se.PropertyName = "System.DateModified";
se.AscendingOrder = false;            
queryOptions.SortOrder.Add(se);

在您的代碼中,只需調用folder.CreateFileQueryWithOptions(queryOptions),然后調用queryResult.GetFilesAsync,結果列表應該正是您想要的。

StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = await queryResult.GetFilesAsync();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM