Lambda表达式 笔记(一)

  “Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,或者可以这么说吧,就是在函数里面定义函数,这在集合类型和linq里面很有用,比如List<T>.Sort函数里的比较器,用Lambda 表达式就非常简洁,举例如下:

public class Person
{ 
        public int Id { get; set; }
        public string Name { get; set; }
        public override string ToString()
        {
            return Id.ToString() + "," + Name;
        }
 }

   Lambda表达式作为比较器相对比调用IComparable<T>.CompareTo(T other)稍微慢些,但是灵活性要好。

  可以将Lambda表达式分配给委托类型,Func <T, TResult >系统定义好的泛型委托,把Lambda表达式分配Func。

1     [Test]
2 public static void test5()
3 {
4 int n =10;
5 List<Person> list = new List<Person>(n);
6 for (int i = 0; i < n; i++)
7 {
8 list.Add(new Person() { Id = i, Name = "Person " + i.ToString() });
9 }
10 Trace.WriteLine("原始数据:");
11 foreach (var item in list)
12 {
13 Trace.Write(item.ToString() + "\t");
14 }
15 Trace.WriteLine("\n排序后数据:");
16 Sort(list, (c2, c1) => c1.Id.CompareTo(c2.Id));
17 foreach (var item in list)
18 {
19 Trace.Write(item.ToString() + "\t");
20 }
21
22
23 }
24
25 private static void Sort<T>(List<T> l,Func<T,T,int> sw)
26 {
27 for (int i = 0; i < l.Count -1; i++)
28 {
29 for (int j = i; j < l.Count; j++)
30 {
31 if (sw(l[i],l[j]) > 0)
32 {
33 T temp = l[i];
34 l[i] = l[j];
35 l[j] = temp;
36 }
37 }
38 }
39 }


posted on 2011-07-04 21:32  小指令  阅读(222)  评论(0)    收藏  举报

导航