Как отсортировать просмотр списка по размеру файла? - PullRequest
0 голосов
/ 03 февраля 2009

У меня есть список с 4 столбцами - имя, расширение, размер и местоположение. У меня есть метод, который принимает размер файла в байтах и ​​при необходимости преобразует в КБ, МБ, ГБ и т. Д. Примером вывода будет файл размером 1024 байта, который печатается как «1 КБ». Это значение затем помещается в просмотр списка.

Что мне нужно сделать, так это разумно отсортировать столбец размера. В настоящее время сортировка является простым сравнением, поэтому 1025 КБ выше, чем 1024 МБ. Как я могу сделать так, чтобы он «знал размер»?

Мой текущий код сортировки взят из этой статьи: http://support.microsoft.com/kb/319401 А вот мой код, который генерирует текст размера файла:

        public static string getDynamicFileSize(string fileName)
    {
        FileInfo fi = new FileInfo(fileName);
        long sizeInBytes = fi.Length;
        if (sizeInBytes >= 1073741824)
        {
            double sizeInGB = sizeInBytes / Math.Pow(1024, 3);
            return Math.Round(sizeInGB, 2) + " GB";
        }

        if (sizeInBytes >= 1048576)
        {
            double sizeInMB = sizeInBytes / Math.Pow(1024, 2);
            return Math.Round(sizeInMB, 2) + " MB";
        }

        if (sizeInBytes >= 1024)
        {
            double sizeInKB = sizeInBytes / Math.Pow(1024,1);
            return Math.Round(sizeInKB, 2) + " KB";
        }

        //No conversion needed
        return sizeInBytes + " bytes";
    }

Спасибо.

Ответы [ 2 ]

1 голос
/ 03 февраля 2009

Почти каждый объект в .NET имеет член Tag. Это место, где вы можете набить все, что вам нужно. В вашем случае я бы вставил размер файла в байтах в свойство ListViewSubItem.Tag. Затем ваш алгоритм сортировки может использовать его вместо текста столбца.

0 голосов
/ 02 июля 2012

Возможно дублирование следующего ответа. Это должно легко решить вашу проблему.

Как отсортировать столбец списка, который содержит данные о размере файла? C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...