[英]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.