c# - 如何使用 IListFileItem 在属性上使用 OrderByDescending?
问题描述
我有以下代码,它将返回特定给定 azure 存储路径的所有列表项(文件和文件夹)。
我想OrderByDescending
根据属性过滤它LastModified
如何做到这一点?
// Get list of all files/directories on the file share
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["storageConnectionString"]);
CloudFileClient fileClient = cloudStorageAccount.CreateCloudFileClient();
CloudFileShare fileShare = fileClient.GetShareReference(ConfigurationManager.AppSettings["shareName"]);
var sourceName = fileShare.GetRootDirectoryReference().GetDirectoryReference((ConfigurationManager.AppSettings["sourceName"]));
IEnumerable<IListFileItem> fileList = sourceName.ListFilesAndDirectories();
var test = (fileList.OrderByDescending(t => t.Uri.AbsolutePath).FirstOrDefault());
我试过铸造但LastModified
为空
fileList.ToList().ForEach(x => ((CloudFileDirectory)x).FetchAttributes());
GetAllSubDir(fileList.OrderByDescending(t => ((CloudFileDirectory)t).Properties.LastModified.Value).FirstOrDefault());
而不是Uri.AbsolutePath
我想使用LastModified
.
解决方案
试试下面的代码。您需要首先获取所有文件,因为 ListFilesAndDirectories 仅返回单个级别的文件和目录。
List<CloudFile> list = new List<CloudFile>();
public void Test()
{
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["storageConnectionString"]);
CloudFileClient fileClient = cloudStorageAccount.CreateCloudFileClient();
CloudFileShare fileShare =
fileClient.GetShareReference(ConfigurationManager.AppSettings["shareName"]);
var sourceName = fileShare.GetRootDirectoryReference().GetDirectoryReference((ConfigurationManager.AppSettings["sourceName"]));
IEnumerable<IListFileItem> fileList = sourceName.ListFilesAndDirectories();
listFile(fileList);
var test = (from file in list
orderby file.Properties.LastModified descending
select file).FirstOrDefault();
}
// detect all files in the directory
public void listFile(IEnumerable<IListFileItem> results)
{
foreach (IListFileItem fileItem in results)
{
if (fileItem.GetType() == typeof(CloudFileDirectory))
{
CloudFileDirectory directory = (CloudFileDirectory)fileItem;
var res = directory.ListFilesAndDirectories();
listFile(res);
}
else
{
CloudFile file = (CloudFile)fileItem;
file.FetchAttributes();
list.Add(file);
}
}
}
推荐阅读
- python - 使用 python 刮表以获取玩家列表
- c++ - 检查函数参数的默认分配
- cmake - CMake TARGET_NAME 生成器表达式
- angular - 如何从可观察对象数组中返回可观察对象
- javascript - 如何根据 ES6 中的单击元素创建新对象?
- bash - 'cd --' 的行为(两个连字符)
- android - 错误无法启动活动 ComponentInfo?
- java - 如何修改 JSONObject 中的单个值?
- python - 无法安装 l18n,UnicodeDecodeError: 'cp950' codec can't decode byte
- python - matplotlib 自定义 linecolor 和 line type 循环器