星期四, 4月 07, 2016

[LINQ] OrderBy - 自訂排序

LINQ OrderBy 自訂排序的簡單練習
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // A 和 B 小寫在前面;C 和 D 大寫在前面
            List<String> demo = new List<String>()
            {
                "a" , "A" , 
                "b" , "B" , 
                "C" , "c" ,
                "D" , "d"
            };

            // 區分大小寫
            var result = demo.OrderBy(e => e);

            // 不區分大小寫
            var result = demo.OrderBy(e => e , StringComparer.CurrentCultureIgnoreCase);

            // 自訂排序
            var result = demo.OrderBy(e => e, new CustomOrder());

            foreach (var item in result)
            {
                Console.WriteLine(item.ToString());
            }
        }
    }

    /// 
    /// 把大寫 C 放在最前面,其它不區分大小寫
    /// 
    public class CustomOrder : IComparer<String>
    {
        public int Compare(string x, string y)
        {
            if (x.Equals("C")) return -1;
            else if (y.Equals("C")) return 1;

            return string.Compare(x, y  , true);
            // 或
            return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
        }
    }
}
區分大小寫

[LINQ] OrderBy - 自訂排序-1

不區分大小寫

[LINQ] OrderBy - 自訂排序-2

自訂排序

[LINQ] OrderBy - 自訂排序-3

沒有留言:

張貼留言