Anyone have a good resource or provide a sample of a natural order sort in C# for an FileInfo array? I am implementing the IComparer interface in my sorts.

解决方案

The easiest thing to do is just P/Invoke the built-in function in Windows, and use it as the comparison function in your IComparer:

[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]

private static extern int StrCmpLogicalW(string psz1, string psz2);

Michael Kaplan has some examples of how this function works here, and the changes that were made for Vista to make it work more intuitively. The plus side of this function is that it will have the same behaviour as the version of Windows it runs on, however this does mean that it differs between versions of Windows so you need to consider whether this is a problem for you.

So a complete implementation would be something like:

[SuppressUnmanagedCodeSecurity]

internal static class SafeNativeMethods

{

[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]

public static extern int StrCmpLogicalW(string psz1, string psz2);

}

public sealed class NaturalStringComparer : IComparer

{

public int Compare(string a, string b)

{

return SafeNativeMethods.StrCmpLogicalW(a, b);

}

}

public sealed class NaturalFileInfoNameComparer : IComparer

{

public int Compare(FileInfo a, FileInfo b)

{

return SafeNativeMethods.StrCmpLogicalW(a.Name, b.Name);

}

}

c# 自然序号,在C#中的自然排序相关推荐

  1. java自然排序_Java中的自然排序顺序字符串比较 - 是内置的吗?

    String实现了Comparable,这就是Java中的自然顺序(使用类似的接口进行比较).您可以将字符串放在TreeSet中,也可以使用Collections或Arrays类进行排序. 但是,在您 ...

  2. 指挥控制系统中的自然智能和人工智能

    来源:人机与认知实验室 [编者按:为什么美军的"深绿系统"不好用?并常常被指挥员所诟病.但这是指控系统智能化的关键之所在!你也许会简单地说:"是人.机.环境系统失调造成的 ...

  3. 解读艾略特波浪理论中的自然法则

    解读艾略特波浪理论中的自然法则 波浪理论近年来越来越受欢迎,存在的既是正确的,这证明它有一定的可取之处.而且更重要的是波浪理论经久不衰,这是十分难能可贵的,要知道有多少人,多少理论想把这个市场说清,结 ...

  4. 让问答更自然 - 基于拷贝和检索机制的自然答案生成系统研究 | 论文访谈间 #02...

    让机器像人类一样拥有智能是研究人员一直以来的奋斗目标.由于智能的概念难以确切定义,图灵提出了著名的图灵测试(Turning Test):如果一台机器能够与人类展开对话而不能被辨别出其机器身份,那么称这 ...

  5. php获取当前日期所在自然周周一周末以及前后自然周始末

    php获取当前日期所在自然周周一周末以及前后自然周始末 首先,获取当前时间,date函数,方法较多,展示一种: $present = date('y-m-d',time());//当前日期 然后获取当 ...

  6. 自然辩证法与计算机科学与技术,自然辩证法和科学技术有什么关系

    自然辨证法在科学技术的具体学科和马克思主义哲学的普遍原理之间,是处于一种中间的位置.正是由于自然辩证法自身特殊的位置,与其他哲学相比,它和自然科学的关系更值得研究.自然辨证法是马克思主义的重要组成部分 ...

  7. 时间约束的实体解析中记录对排序研究

    时间约束的实体解析中记录对排序研究 人工智能技术与咨询 来源:<软件学报> ,作者孙琛琛等 摘 要:实体解析是数据集成和数据清洗的重要组成部分,也是大数据分析与挖掘的必要预处理步骤.传统的 ...

  8. php表格单元格怎么实现排序,angularjs,_angular表格点击序号进行升序,降序排序,怎么实现。,angularjs - phpStudy...

    angular表格点击序号进行升序,降序排序,怎么实现. 序号内容姓名地点时间序号 {{$index + 1}}{{$index + 1}}{{$index + 1}}{{$index + 1}}{{ ...

  9. html段落自动排序,word中怎么自动排序段落

    对于使用了自动编号的 Word 文档,可以方便地在文档结构图中拖放段落,实现段落的重新排序并自动编号.那么下面就由学习啦小编为大家分享下word中自动排序段落的技巧,希望能帮助您. word中自动排序 ...

  10. mysqlorderby数字字符串排序_Python中的元组排序和深度比较

    比较Python中的东西.这听起来几乎是不需要教的,但是我发现Python的比较运算符经常被Python新手误解和低估. 我们来回顾一下Python的比较运算符如何处理不同类型的对象,然后看看如何使用 ...

最新文章

  1. 动态slimmable网络:高性能的网络轻量化方法!对比slimmable涨点5.9%
  2. getaddrinfo(localhost.localdomain): 未知的名称或服务
  3. 【Docker】docker-compose安装
  4. QQ号码采集及邮件发送系统2009
  5. 如何免费申请用于开发目的的Hybris Commerce license
  6. 解决maven dependencies xxx not found
  7. 神经网络之文本情感分析(二)
  8. 【世间万象】五甲万科董事长孙凯歌:五甲有红旗情节
  9. Access导入Sql 2008 R2 错误 0xc020801c
  10. python 成语库_README.md · 天宇之游/一个python的TK猜成语游戏 - Gitee.com
  11. HTML——H5前端框架
  12. 手机APP测试流程方法
  13. 如何把网页保存为PDF
  14. MySQL如何创建视图和用户
  15. 数据库10大常见安全问题盘点
  16. 《产品前线:48位一线互联网产品经理的智慧与实战》读书笔记3
  17. POJ1436Horizontally Visible Segments线段树+lazy
  18. 宇宙人工智能计算机程序,人工智能令整个宇宙变成一个玄计算机,宇宙是虚拟的...
  19. 微信开放平台 帐号管理 绑定在同一个开放平台帐号下的公众号及小程序让用户unionid一致...
  20. CRM客户关系管理系统答辩技术介绍(简答)

热门文章

  1. 【原】unity3d刀光闪过
  2. winform 多个关键字的高亮显示
  3. 第 127 章 Piranha - Cluster administation tools
  4. SpringCloud 教程 | 第二篇: 服务消费者(rest+ribbon)
  5. Linux Shell 常用快捷键
  6. FTP同步的另类解决办法——NetDrive
  7. .Toolkit 增补
  8. 看张悟本神医现象有感
  9. c语言是函数式原型的编程,编程范式|程序世界里的编程范式,探索编程本质
  10. 梯度的直观理解_梯度下降最直观的理解