using System;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
public class Test
{
class Data {
public string Name {get;set;}
public int Number {get;set;}
}
static IEnumerable<Data> Ordered<T>(Func<Data,T> e, IEnumerable<Data> data) {
return data.OrderBy(e);
}
public static void Main()
{
var data = new List<Data>{
new Data {Name = "hello", Number = 2}
, new Data {Name = "world", Number = 1}
};
foreach (var x in Ordered<string>(d => d.Name, data)) {
Console.WriteLine("{0} - {1}", x.Name, x.Number);
}
Console.WriteLine("-------");
foreach (var x in Ordered<int>(d => d.Number, data)) {
Console.WriteLine("{0} - {1}", x.Name, x.Number);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewoJCgljbGFzcyBEYXRhIHsKCQlwdWJsaWMgc3RyaW5nIE5hbWUge2dldDtzZXQ7fQoJCXB1YmxpYyBpbnQgTnVtYmVyIHtnZXQ7c2V0O30KCX0KCXN0YXRpYyBJRW51bWVyYWJsZTxEYXRhPiBPcmRlcmVkPFQ+KEZ1bmM8RGF0YSxUPiBlLCBJRW51bWVyYWJsZTxEYXRhPiBkYXRhKSB7CgkJcmV0dXJuIGRhdGEuT3JkZXJCeShlKTsKCX0KCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgZGF0YSA9IG5ldyBMaXN0PERhdGE+ewoJCQluZXcgRGF0YSB7TmFtZSA9ICJoZWxsbyIsIE51bWJlciA9IDJ9CgkJLCAgIG5ldyBEYXRhIHtOYW1lID0gIndvcmxkIiwgTnVtYmVyID0gMX0KCQl9OwoJCWZvcmVhY2ggKHZhciB4IGluIE9yZGVyZWQ8c3RyaW5nPihkID0+IGQuTmFtZSwgZGF0YSkpIHsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoInswfSAtIHsxfSIsIHguTmFtZSwgeC5OdW1iZXIpOwoJCX0KCQlDb25zb2xlLldyaXRlTGluZSgiLS0tLS0tLSIpOwoJCWZvcmVhY2ggKHZhciB4IGluIE9yZGVyZWQ8aW50PihkID0+IGQuTnVtYmVyLCBkYXRhKSkgewoJCQlDb25zb2xlLldyaXRlTGluZSgiezB9IC0gezF9IiwgeC5OYW1lLCB4Lk51bWJlcik7CgkJfQoJfQp9