in Source/NuGetGallery.Operations/Tasks/CreateWarehouseReportsTask.cs [359:378]
private static void SortItems(JObject report)
{
List<Tuple<int, JObject>> scratch = new List<Tuple<int, JObject>>();
foreach (KeyValuePair<string, JToken> child in ((JObject)report["Items"]))
{
scratch.Add(new Tuple<int, JObject>((int)child.Value["Downloads"], new JObject((JObject)child.Value)));
}
scratch.Sort((x, y) => { return x.Item1 == y.Item1 ? 0 : x.Item1 < y.Item1 ? 1 : -1; });
JArray items = new JArray();
foreach (Tuple<int, JObject> item in scratch)
{
items.Add(item.Item2);
}
report["Items"] = items;
}