Member 13812839 Ответов: 1

Как сделать ( group by ) in ( directory = folder ) по C# ?


Как сделать ( Group by ) in ( Directory = Folder ) по C# ? ( или любым другим способом )

Например, группировать по типу , дате или размеру ?

У меня много папок, и мне нужно отсортировать их все по типу.

Это моя фотография для более подробной информации.


https://i.stack.imgur.com/PXXt2.png[^]

Что я уже пробовал:

Я не могу найти никакого кода и спрашиваю у многих людей

Richard Deeming

Вы хотите прочитать сгруппированный список файлов в C#? Или вы хотите изменить опцию проводника Windows "group by" с C#?

Richard Deeming

Если вы хотите изменить представление Проводника Windows, в нем есть некоторый код этот поток StackOverflow[^] чтобы сделать это. Он находится в Delphi - я не уверен, насколько легко было бы преобразовать его в C#.

1 Ответов

Рейтинг:
5

OriginalGriff

Попробовать это:

DirectoryInfo di = new DirectoryInfo(@"D:\Test Data");
FileInfo[] info = di.GetFiles();
Dictionary<string, List<FileInfo>> byType = info.GroupBy(i => i.Extension).ToDictionary(g => g.Key, g => g.ToList());


Maciej Los

5ed!

OriginalGriff

К своему стыду, я должен был решить, как это сделать с нуля, потому что до сегодняшнего утра я забыл, что написал совет о том, как это сделать пять лет назад:

https://www.codeproject.com/Tips/778786/Using-Linq-to-create-a-Dictionary-of-sub-Lists-by

:вздыхать:

Maciej Los

:смеяться:

Richard Deeming

Я был бы склонен использовать EnumerateFiles вместо GetFiles. GroupBy просто перечисляет все подряд, так что нет никакой пользы в том, чтобы сначала прочитать все файлы в массив. :)