/*public static IOrderedEnumerable<T> ThenBy<T, K>(
         * 	this IOrderedEnumerable<T> source,
         * 	Func<T,K> keySelector,
         * 	IComparer<K> comparer);
         * */
        void ThenByOperator2nd()
        {
            string[] presidents = Presidents.GetPresidentsStringArray ();
            MyVowelToConsonantRatioComparer myComparer = new MyVowelToConsonantRatioComparer();

            IOrderedEnumerable<string> sequence = presidents.OrderBy(p => p.Length).ThenBy ((p => p),myComparer);

            foreach (string item in sequence) {
                Console.WriteLine(item);
            }
        }
        /*pubic static IOrderedEnumerable<T> OrderBy<T, K>(
         * 	this IEnumerable<T> source,
         * 	Func<T, K> keySelector,
         * IComparer<K> comparer);
         * */
        void OrderByOperator2nd()
        {
            string[] presidents = Presidents.GetPresidentsStringArray ();
            MyVowelToConsonantRatioComparer myComparer = new MyVowelToConsonantRatioComparer ();
            IOrderedEnumerable<string> sequence = presidents.OrderBy ((p => p), myComparer);

            foreach (string item in sequence) {
                int vCount = 0;
                int cCount = 0;

                myComparer.GetVowelConsonantCount(item, ref vCount, ref cCount);
                double dRatio = (double)vCount/(double)cCount;

                Console.WriteLine("{0} - {1} - {2}:{3}", item, dRatio, vCount, cCount );
            }
        }