博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
csharp C#数字字符串排序orderby的问题解决
阅读量:4986 次
发布时间:2019-06-12

本文共 1423 字,大约阅读时间需要 4 分钟。

 

   一般情况下 您使用 

strs.OrderBy(n=>n) 得出的结论是 1, 11,111,2,22,222 想要得出 1,2,11,22,111,222 咋办? 源码送上
static void Main(){    SemiNumericComparer comp = new SemiNumericComparer();    List
strs = new List
(){
"11", "12", "1:"}; foreach(string str in strs.OrderBy(n => n, comp)) Console.writeLine(str);}

 

public class SemiNumericComparer : IComparer
{ public int Compare(string s1, string s2) { if (IsNumeric(s1) && IsNumeric(s2)) { if (Convert.ToInt32(s1) > Convert.ToInt32(s2)) return 1; if (Convert.ToInt32(s1) < Convert.ToInt32(s2)) return -1; if (Convert.ToInt32(s1) == Convert.ToInt32(s2)) return 0; } if (IsNumeric(s1) && !IsNumeric(s2)) return -1; if (!IsNumeric(s1) && IsNumeric(s2)) return 1; return string.Compare(s1, s2, true); } public static bool IsNumeric(object value) { try { int i = Convert.ToInt32(value.ToString()); return true; } catch (FormatException) { return false; } } }

  

代码摘自网络。

转载于:https://www.cnblogs.com/haoliansheng/p/10469469.html

你可能感兴趣的文章
在Java 7里如何对文件进行操作
查看>>
Python爬虫一步步抓取房产信息
查看>>
Hbase shell基本操作
查看>>
聊聊我怎么系统学习Linux技能并快速提高的
查看>>
shell第四篇(上)
查看>>
Leetcode题解(26)
查看>>
C# ASP.NET MVC HtmlHelper用法大全
查看>>
Orcale and 逻辑运算符的特殊情况
查看>>
python学习笔记-学习大纲
查看>>
Java中File类中方法应用的两个例子
查看>>
Datagrid自动增加编号列
查看>>
配置同时使用 Gitlab 和 Github 的开发环境
查看>>
深入理解java虚拟机第五部分高效并发
查看>>
在try{}里面有一个return语句,那么紧跟在后面的finally{}里面的code还会执行吗?...
查看>>
openstack 流量控制
查看>>
Linux开放端口允许网络连接
查看>>
使用SharePoint Designer 2010新建外部内容类型,并解决访问被拒绝问题
查看>>
手工改变Quartus II软件的编译速度[转载]
查看>>
密码加密&&动手动脑
查看>>
多项式求和
查看>>