C# 如何按文件大小对listview排序?
我有一个包含4列的列表视图——名称、扩展名、大小和位置。我有一个方法,它以字节为单位获取文件大小,并根据需要转换为KB、MB、GB等。例如,输出为1024字节的文件,打印为“1KB”。然后将该值放置在listview中 我需要做的是对大小列进行智能排序。现在排序只是一个简单的比较,所以1025KB比1024MB高。我怎样才能让它“知道大小” 我当前的排序代码来自这篇KB文章: 下面是生成文件大小文本的代码:C# 如何按文件大小对listview排序?,c#,sorting,file,C#,Sorting,File,我有一个包含4列的列表视图——名称、扩展名、大小和位置。我有一个方法,它以字节为单位获取文件大小,并根据需要转换为KB、MB、GB等。例如,输出为1024字节的文件,打印为“1KB”。然后将该值放置在listview中 我需要做的是对大小列进行智能排序。现在排序只是一个简单的比较,所以1025KB比1024MB高。我怎样才能让它“知道大小” 我当前的排序代码来自这篇KB文章: 下面是生成文件大小文本的代码: public static string getDynamicFileS
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";
}
谢谢。大多数.NET中的每个对象都有一个标记成员。这是一个你可以把任何你需要的东西都塞进的地方。在您的情况下,我会将文件大小(以字节为单位)填充到ListViewSubItem.Tag属性中。然后,您的排序算法可以使用它来排序,而不是列文本。以下答案可能重复。它应该很容易解决你的问题