Всех приветствую.
Решил посмотреть, как пишут код в 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));
}
}
Здравствуйте, StatujaLeha, Вы писали:
SL>1. Может есть какой-то таинственный смысл в OrderBy().OrderBy()?
Никакого. Очередной перец наступил на классические грабли и незнание про ThenBy.
SL>2. А в ToList() после этого?
Отключает ленивость.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>