我正在尝试完成一项非常简单的任务,即以修改日期的降序从StorageFile
获取StorageFolder
列表。
当前代码检索列表但未排序
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属性,可以将其用于排序。您可以在File access sample的方案6中找到代码片段。
您也可以使用自定义文件查询而不是常见查询之一来实现您的目标。为此,我建议您查看Programmatic file search sample,并在我的免费电子书Programming Windows Store Apps with HTML, CSS, and JavaScript, 2nd Edition的第11章中讨论这些内容(不要让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();
关于c# - 获取按上次修改日期排序的StorageFile列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31860360/