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 }


你可能感兴趣的:(lambda)