zoukankan      html  css  js  c++  java
  • c# 集合中有数字、字符的Orderby排序

    string[] things= new string[] { "105", "101", "102", "103", "90","a","B" ,"A","b"};
    foreach (var thing in things.OrderBy(x => x))
    {
        Console.WriteLine(thing);
    }
    输出: 101,102,103,105,90,a,A,b,B
    目标输出: 90,101,102,103,105,a,A,b,B
        foreach (var thing in things.OrderBy(x => x, new SemiNumericComparer()))
        {    
            Console.WriteLine(thing);
        }

     

    public class SemiNumericComparer: IComparer<string>
    {
        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, false);
        }
        public static bool IsNumeric(object value)
        {
            try {
                int i = Convert.ToInt32(value.ToString());
                return true; 
            }
            catch (FormatException) {
                return false;
            }
        }
    }
  • 相关阅读:
    C++实现base64编解码
    使用matplotlib绘制3D函数图像
    C++分治策略实现快速排序
    C++分治策略实现二分搜索
    C++生成随机数
    eBay 表结构
    mysql 流程函数
    无限极分类
    PHP 导出 Excell
    js
  • 原文地址:https://www.cnblogs.com/94cool/p/9314685.html
Copyright © 2011-2022 走看看