如何使用 IListFileItem 在属性上使用 OrderByDescending?

How to use OrderByDescending on Properties using IListFileItem?

我有以下代码,它将 return 特定给定 azure 存储路径的所有列表项(文件和文件夹)。

我想根据 属性 LastModified

使用 OrderByDescending 过滤它

如何实现?

 // 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 在一个级别中只有 returns 个文件和目录。

    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);
            }
        }
    }
 public static void CheckDate()
        {
            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 latestFile = (from file in filedataList
                              orderby file.Properties.LastModified descending
                              select file).FirstOrDefault();

            Console.WriteLine(" LastModified Datetime - " + latestFile.Properties.LastModified.Value.DateTime);

        }

        public static void listFile(IEnumerable<IListFileItem> results)
        {
            foreach (var item in results)
            {
                if (item.GetType() == typeof(CloudFileDirectory))
                {
                    CloudFileDirectory dir = (CloudFileDirectory)item;
                    dir.FetchAttributes();
                    dirList.Add(dir);
                }
                else
                {
                    CloudFile file = (CloudFile)item;
                    file.FetchAttributes();
                    filedataList.Add(file);
                }
            }
            if (dirList.Count > 0)
            {
                var latestDir = (from dir in dirList
                                 orderby dir.Properties.LastModified descending
                                 select dir).FirstOrDefault();
                dirList.Clear();
                var result = latestDir.ListFilesAndDirectories();
                listFile(result);
            }
        }