Я использую GetFiles и GetDirectories для извлечения файлов из диалогового окна браузера папок. Теперь у меня проблема с сортировкой файлов/каталогов по размеру. Я попробовал следующий метод, но не уверен, что будет следующим шагом, чтобы зациклить оба файла/папки в зависимости от их размера.
private void Button1_Click(object sender, EventArgs e)
{
//open folder dialog
FolderBrowserDialog FBD = new FolderBrowserDialog();
if (FBD.ShowDialog() == DialogResult.OK)
{
listBox1.Items.Clear();
//get file name and file info
FileInfo[] files = new DirectoryInfo(FBD.SelectedPath).GetFiles();
//get directory
DirectoryInfo[] dirs = new DirectoryInfo(FBD.SelectedPath).GetDirectories();
//Order by size.
var sort = from fileName in files
orderby new FileInfo(fileName).Length ascending
select fileName;
//now I have no idea how to apply this sort to the loop below
foreach (FileInfo file in files)
{
//print single file output eg. filename (300000 bytes)
listBox1.Items.Add(file.Name + "(" + file.Length + " bytes)");
}
foreach (DirectoryInfo dir in dirs)
{
//print sub folder output eg. foldername (sum of all childfiles sizes) -> (600000 bytes)
listBox1.Items.Add(dir.Name + "(" + dir.GetFiles().Sum(f => f.Length) + " bytes)");
}
}
}
Кнопка откроет диалоговое окно папки и список для отображения результата.
sort
, почему вы хотите сделать это снова в цикле, и обратите внимание, что вы используете старыйfiles
в foreach, а неsort
, который является результатом сортировки. - person hessam hedieh   schedule 12.09.2019