如何对包含文件大小数据的列表视图列进行排序? C#

2023-12-22

我想对 ListView 列中的项目进行排序,我已经做到了,但是...我无法使用列中的数据类型进行排序(见图),有人知道如何做到这一点吗?


为排序函数编写一个自定义比较器,如下所示:

    /// <summary>
    /// Comparator for values like 123 KB
    /// </summary>
    /// <param name="x">First value to compare</param>
    /// <param name="y">Second value to compare</param>
    /// <returns>0 for equal, 1 for x &gt; y, -1 for x &lt; y</returns>
    int Compare(object x, object y)
    {
        // Convert to strings
        string strX = null;
        if (x is string)
            strX = (string)x;
        else if (x != null)
            strX = x.ToString();
        string strY = null;
        if (y is string)
            strY = (string)y;
        else if (y != null)
            strY = y.ToString();

        // Nulls first (null means less, since it's blank)
        if (strX == null)
        {
            if (strY == null)
                return 0;
            return -1;
        }
        else if (strY == null)
            return 1;

        // Convert the non-KB part to a number
        double numX;
        double numY;
        if (strX.EndsWith("KB") || strX.EndsWith("GB") || strX.EndsWith("MB"))
            strX = strX.Substring(0, strX.Length - 2);
        if (strX.EndsWith("Bytes"))
            strX = strX.Substring(0, strX.Length - 5);
        strX = strX.Trim();
        double.TryParse(strX, out numX);
        if (strY.EndsWith("KB") || strY.EndsWith("GB") || strY.EndsWith("MB"))
            strY = strY.Substring(0, strY.Length - 2);
        if (strY.EndsWith("Bytes"))
            strY = strX.Substring(0, strY.Length - 5);
        strY = strY.Trim();
        double.TryParse(strY, out numY);

        // Compare the numbers
        return numX.CompareTo(numY);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对包含文件大小数据的列表视图列进行排序? C# 的相关文章

随机推荐

  • Android Studio vs Eclipse + ADT 插件? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于这个问题我想得到客观的回答 为什么我应该使用 Android Studio 遇到问题和复杂的任务 例如导入为 Eclipse 开发的库 对我
  • 您在程序中使用“kibibyte”作为度量单位吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将输出参数传递给存储过程?

    我编写了一个存储过程 格式如下 ALTER PROCEDURE usp data migration sourceDatabase varchar 50 sourceTable varchar 50 targetDatabase varch
  • 登录后 MVC 重定向

    我有一个 AccountController 用户可以在其中登录 还有一个名为 Admin 的区域 用户必须被授权才能查看 当用户使用正确的用户名和密码登录时 它会再次重定向到同一页面 Account Login ReturnUrl 2FA
  • 使用 Maven-3 使用 archiva 重新部署时出现 Http 409 错误

    我正在将 jar 文件部署到 Maven 存储库 archiva pom xml
  • 如何在Ocaml中快速将树结构打印成字符串?

    假设我在 OCaml 中有一个 树 形式的数学表达式 它被表示为如下的代数类型 type expr Number of int Plus of expr expr 嗯 这是一个very简化的定义 但足以描述问题 我想将其转换为逆波兰表示法的
  • 使用 Django Forms 来显示和编辑?

    我正在研究如何在 Django 中最好地创建可用于显示或编辑数据的 HTML 页面 也就是说 我希望字段的值在显示模式下显示为文本 但在编辑 添加模式下显示在其小部件中 看来 Django 的设计初衷并不是这样做 这些字段总是出现在它们的小
  • 如何在 iPhone 中以编程方式获取应用程序的存储大小

    I want to get the Storage Sizes of each Applications in iPhone through objective C Any one help to get like this 假设您正在为越
  • C++.Net 程序集可以轻松反编译吗?

    我知道所有程序集都可以以某种方式反编译 但 C 和 VB 应用程序最容易使用 Net Reflector 等工具反编译为源代码 所以我的问题是 如果我使用 C 的 Net 程序集和函数来编写应用程序 是否可以轻松反编译它 就好像它是带有 N
  • 将应用程序从 Carbon 迁移到 Cocoa

    我正在开发一个应用程序 需要将其整个代码从carbon迁移到cocoa 我在大学期间和实习期间有C C python和Java编程经验 但从未接触过Objective C或做过在此之前的任何 Mac Carbon 和 Cocoa 编程 那么
  • 适用于 iOS 的 GA 和自定义尺寸

    我们在 iOS 应用程序中设置了 Google Analytics 该应用程序发送供应商标识符以区分报告中的用户 这是我们所做的 在 Google Analytics 中 我们设置了一个自定义维度 如下所示 名称 用户标识符 范围 用户 主
  • OpenXML 电子表格中的单元格样式 (SpreadsheetML)

    我已使用 OpenXML SDK 在 C 中生成了一个 xlsx 电子表格 但无法弄清楚如何使单元格样式正常工作 我一直在研究 Excel 生成的文件 但不太明白它是如何完成的 现在 我正在创建一个填充 创建一个CellStyleForma
  • DOCTYPE 影响行高的渲染

    这是一个令人头疼的问题 我创建了一个带注释的 jsFiddle 来演示我最近在使用 Twitter 的 Bootstrap 框架创建一些下拉按钮时遇到的现象 http jsfiddle net jackwanders WKvPv http
  • 使用 Ruby 反转字符串每两个字符

    我想用 Ruby 反转每两个字符的字符串 输入 0123456789abcdef 我期望的输出 efcdab8967452301 我不确定这是否是最好的方法 0123456789abcdef scan reverse join efcdab
  • 无法在 Windows 10 上打开 Xamarin Studio

    我已按照此视频中的步骤在没有 Visual Studio 的情况下安装 xamarin studio 如何在Windows中安装Xamarin Studio https www youtube com watch v FGYTrTz Fgg
  • 如何将静态库嵌入到共享库中?

    在Linux上 我试图创建一个共享库libbar so 它嵌入了一个商业静态库 许可很好 商业库有4个版本 libfoo seq a libfoo mt a libfoo seq so和libfoo mt so 它们都提供相同的符号 只是代
  • 私有类与公共方法?

    这是一段代码 private class myClass public static void Main or private class myClass public void method 我知道 第一个行不通 第二个会的 但为什么首先
  • 常量字符串/字符串文字的生命周期如何工作?

    我读了官网教程 https doc rust lang org stable book first edition lifetimes html我对常量字符串 字符串文字的生命周期有一些疑问 当我编写以下代码时出现错误 fn get str
  • React bootstrap 轮播不工作

    我正在尝试使用react bootstrap 创建一个简单的轮播 这是我试图创建的简单的不受控制的轮播 https react bootstrap github io components carousel https react boot
  • 如何对包含文件大小数据的列表视图列进行排序? C#

    我想对 ListView 列中的项目进行排序 我已经做到了 但是 我无法使用列中的数据类型进行排序 见图 有人知道如何做到这一点吗 为排序函数编写一个自定义比较器 如下所示