Вопрос по Sample от Google Analytics
От: StatujaLeha на правах ИМХО
Дата: 21.10.16 20:56
Оценка: :)
Всех приветствую.

Решил посмотреть, как пишут код в Google
Просто периодически делаю такое: ищу публичные проекты известных компаний и смотрю "а как там большие посоны делают дела".

В этот раз смотрел Google-Dotnet-Samples/Google-Analytic.
https://github.com/LindaLawton/Google-Dotnet-Samples/blob/master/Google-Analytics/Daimto-Google-Analytics-Sample/Daimto-Google-Analytics-Sample/Program.cs

    class Program
    {
        static void Main(string[] args)
        {
            ......
           
            //Getting a list of the Dimensions and metrics.

            string lastGroup = string.Empty;
            string lastType = string.Empty;
            Columns metadata = DaimtoAnaltyicsMetaDataHelper.MetaDataList(service);
            foreach (Column column in metadata.Items.OrderBy(a => a.Attributes["group"]).OrderBy(a => a.Attributes["type"]).ToList())
            {
                if (column.Attributes["group"] != lastGroup)
                {
                    Console.WriteLine("Group: " + column.Attributes["group"]);
                    lastGroup = column.Attributes["group"];
                    lastType = string.Empty;
                }
                if (column.Attributes["type"] != lastType)
                {
                    Console.WriteLine("\t" + column.Attributes["type"]);
                    lastType = column.Attributes["type"];
                }

                Console.WriteLine("\t\t" + column.Attributes["uiName"] + " : " + column.Id);
        
            ......
        }
    }


1. Может есть какой-то таинственный смысл в OrderBy().OrderBy()?
2. А в ToList() после этого?

Сделал свой пример.
И если OrderBy().OrderBy() отличается и от просто второго OrderBy(), и от OrderBy().ThenBy(), то в вызове ToList() я пока совсем никакого смысла не вижу.
    #region Google Analytics

    public struct Pair
    {
        public int First;
        public int Second;
        public int Index;
    }
    
    #endregion

    class Program
    {
        static void Print(IEnumerable<Pair> S)
        {
            foreach (var s in S)
            {
                Console.WriteLine(string.Format("Index: {0} First: {1}, Second: {2}", s.Index, s.First, s.Second));
            }
        }

        static void Main(string[] args)
        {
            int size = 10;
            int M = 5;
            var S = Enumerable.Range(0, size).Select(e => new Pair() { First = e % M, Second = e % 2, Index = e });

            Console.WriteLine("No sort");
            Print(S);

            Console.WriteLine();
            Console.WriteLine("OrderBy(First)");
            Print(S.OrderBy(e => e.First));

            Console.WriteLine();
            Console.WriteLine("OrderBy(Second)");
            Print(S.OrderBy(e => e.Second));

            Console.WriteLine();
            Console.WriteLine("OrderBy(First).OrderBy(Second)");
            Print(S.OrderBy(e => e.First).OrderBy(e => e.Second));

            Console.WriteLine();
            Console.WriteLine("OrderBy(First).ThenBy(Second)");
            Print(S.OrderBy(e => e.First).ThenBy(e => e.Second));
        }
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.