google code prettify

2015年6月1日 星期一

[LINQ] OrderBy 依造字串長度排序後,再依字母大小排序

[LINQ] OrderBy 依造字串長度排序後,再依字母大小排序



public static void Main(string[] args)
        {
            string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };

            var sortedWords =
                words.OrderBy(a => a.Length);
                     //.ThenBy(a => a, new CaseInsensitiveComparer());

            // Another way. TODO is this use of ThenBy correct? It seems to work on this sample array.
            var sortedWords2 =
                from word in words
                orderby word.Length
                select word;

            var sortedWords3 = sortedWords2.ThenBy(a => a, new CaseInsensitiveComparer());

            foreach (var word in sortedWords)
            {
                Console.WriteLine(word);
            }
            Console.WriteLine("");

            foreach (var word3 in sortedWords3)
            {
                Console.WriteLine(word3);
            }
            Console.ReadLine();
        }
    }

    public class CaseInsensitiveComparer : IComparer<string>
    {
        public int Compare(string x, string y)
        {
            return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
        }
    }

<pre> 

沒有留言:

張貼留言