Fis*_*ake 1 c# windows-store-apps windows-8.1
我正在努力完成一项非常简单的任务,即StorageFile从StorageFolder修改日期的降序中获取列表.
检索列表但未排序的当前代码
Task<IReadOnlyList<StorageFile>> task = folder.Result.GetFilesAsync().AsTask();
task.Wait();
return task.Result.Select(z => z.Name).ToArray();
Run Code Online (Sandbox Code Playgroud)
StorageFile有一个属性,DateCreated但与DateModified没有任何相似之处.
我查看了使用,GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByDate)但这仅适用于Windows库中的文件.
在WinRT中,您需要调用StorageFile.GetBasicPropertiesAsync.您将获得的BasicProperties对象具有dateModified属性,您可以将其用于排序.您可以在文件访问示例的方案6中找到代码段.
您还可以使用自定义文件查询而不是常见查询来实现目标.为此,我建议查看Programmatic文件搜索示例,我将在我的免费电子书第11章中讨论这些内容,使用HTML,CSS和JavaScript编写Windows应用程序应用程序,第2版(不要让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);
Run Code Online (Sandbox Code Playgroud)
在您的代码中,只需调用folder.CreateFileQueryWithOptions(queryOptions),然后调用queryResult.GetFilesAsync,结果列表应该正是您想要的.
StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = await queryResult.GetFilesAsync();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |