I have following code which will return all list items (files and folders) of specific given azure storage path.
I want to filter it using OrderByDescending
based on Property LastModified
How to achieve this ?
// 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());
I tried with casting but LastModified
is null
fileList.ToList().ForEach(x => ((CloudFileDirectory)x).FetchAttributes());
GetAllSubDir(fileList.OrderByDescending(t => ((CloudFileDirectory)t).Properties.LastModified.Value).FirstOrDefault());
instead of Uri.AbsolutePath
I want to use LastModified
.
Have a try at following code. You need to get all files first because ListFilesAndDirectories only returns files and directory in a single level.
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);
}
}
}