class Test { public string Name { get; set; } public int Age { get; set; } } static void Main(string[] args) { List<Test> pList = new List<Test>(); pList.Sort((x, y) => x.Name.CompareTo(y.Name)); pList.Sort((x, y) => x.Age - y.Age); }依葫芦画瓢吧,传入两个要比较的对象,后面的表达式是比较方式,结果为int值。
class Test
{
public string Name { get; set; }
public int Age { get; set; }
}
static void Main(string[] args)
{
List<Test> pList = new List<Test>();
pList.Sort((x, y) => x.Name.CompareTo(y.Name));
pList.Sort((x, y) => x.Age - y.Age);
}依葫芦画瓢吧,传入两个要比较的对象,后面的表达式是比较方式,结果为int值。
pList.ForEach(item => Console.WriteLine(item.Name));
这东西吧,也不太好讲解。
这些都是属于Linq,lambda表达式。
方法中传入一个委托,lambda表达式就是一个委托,只要符合参数所需要的声明就可以了。
class Test
{
public string Name { get; set; }
public int Age { get; set; }
} static int myComparison(Test t1, Test t2)
{
return t1.Age - t2.Age;
} static void Main(string[] args)
{
List<Test> pList = new List<Test>();
Comparison<Test> tc = new Comparison<Test>(myComparison);
pList.Sort(tc);
//pList.Sort((x, y) => x.Name.CompareTo(y.Name));
//pList.Sort((x, y) => x.Age - y.Age);
//pList.ForEach(item => Console.WriteLine(item.Name));
}上面这种写法和下面这一句是完全一个意思。
pList.Sort((x, y) => x.Age - y.Age);=>就是lambda表达式,可以读者goes to,
前面是参数(相当于方法中的参数),后面是操作(相当于方法体) (x, y) => x.Age - y.Age
上面这句代码,会生成下面这一段:
Comparison<Test> tc = new Comparison<Test>(myComparison);
static int myComparison(Test t1, Test t2)
{
return t1.Age - t2.Age;
}
{
...
}
Enumerable.OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>)
http://msdn.microsoft.com/en-us/library/bb534966.aspx