using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
int[] keys = { 31, 28, 31, 30, 31 };
string[] values = { "Jan", "Feb", "Mar", "Apr", "Jan" };
var list1 = new List<KeyValuePair<int, string>>();
var list2 = new List<Disp>();
Console.WriteLine("テストデータ");
for (int i = 0; i < keys.Length; i++)
{
list1.Add(new KeyValuePair<int, string>(keys[i], values[i]));
list2.Add(new Disp(keys[i], values[i]));
Console.WriteLine("{0} {1}", keys[i], values[i]);
}
Console.WriteLine("汎用");
foreach (var disp in list1.OrderBy(t => -t.Key))
{
Console.WriteLine("{0} {1}", disp.Key, disp.Value);
}
Console.WriteLine("独自クラス");
foreach (var disp in list2.OrderBy(t => -t.Key))
{
Console.WriteLine("{0} {1}", disp.Key, disp.Value);
}
}
class Disp
{
public int Key { get; set; }
public string Value { get; set; }
public Disp(int key, string value)
{
Key = key;
Value = value;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpjbGFzcyBQcm9ncmFtCnsKICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgIHsKICAgICAgICBpbnRbXSBrZXlzID0geyAzMSwgMjgsIDMxLCAzMCwgMzEgfTsKICAgICAgICBzdHJpbmdbXSB2YWx1ZXMgPSB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiSmFuIiB9OwoKICAgICAgICB2YXIgbGlzdDEgPSBuZXcgTGlzdDxLZXlWYWx1ZVBhaXI8aW50LCBzdHJpbmc+PigpOwogICAgICAgIHZhciBsaXN0MiA9IG5ldyBMaXN0PERpc3A+KCk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIuODhuOCueODiOODh+ODvOOCvyIpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2V5cy5MZW5ndGg7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGxpc3QxLkFkZChuZXcgS2V5VmFsdWVQYWlyPGludCwgc3RyaW5nPihrZXlzW2ldLCB2YWx1ZXNbaV0pKTsKICAgICAgICAgICAgbGlzdDIuQWRkKG5ldyBEaXNwKGtleXNbaV0sIHZhbHVlc1tpXSkpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9IHsxfSIsIGtleXNbaV0sIHZhbHVlc1tpXSk7CiAgICAgICAgfQoKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgi5rGO55SoIik7CiAgICAgICAgZm9yZWFjaCAodmFyIGRpc3AgaW4gbGlzdDEuT3JkZXJCeSh0ID0+IC10LktleSkpCiAgICAgICAgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9IHsxfSIsIGRpc3AuS2V5LCBkaXNwLlZhbHVlKTsKICAgICAgICB9CgogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCLni6zoh6rjgq/jg6njgrkiKTsKICAgICAgICBmb3JlYWNoICh2YXIgZGlzcCBpbiBsaXN0Mi5PcmRlckJ5KHQgPT4gLXQuS2V5KSkKICAgICAgICB7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJ7MH0gezF9IiwgZGlzcC5LZXksIGRpc3AuVmFsdWUpOwogICAgICAgIH0KICAgIH0KCiAgICBjbGFzcyBEaXNwCiAgICB7CiAgICAgICAgcHVibGljIGludCBLZXkgeyBnZXQ7IHNldDsgfQogICAgICAgIHB1YmxpYyBzdHJpbmcgVmFsdWUgeyBnZXQ7IHNldDsgfQogICAgICAgIHB1YmxpYyBEaXNwKGludCBrZXksIHN0cmluZyB2YWx1ZSkKICAgICAgICB7CiAgICAgICAgICAgIEtleSA9IGtleTsKICAgICAgICAgICAgVmFsdWUgPSB2YWx1ZTsKICAgICAgICB9CiAgICB9Cn0K