深入理解 c# 第九章 用Lambda表达式处理一个电影列表 过滤 排序,操作

    class FilmFilteringAndSorting
    {
        class Film
        {
            public string Name { get; set; }
            public int Year { get; set; }
        }

        static void Main()  //列表的过滤 排序,操作  
		//用Lambda表达是处理一个电影列表
        {
            var films = new List<Film> //初始化
            {
                new Film {Name="Jaws", Year=1975},
                new Film {Name="Singing in the Rain", Year=1952},
                new Film {Name="Some like it Hot", Year=1959},
                new Film {Name="The Wizard of Oz", Year=1939},
                new Film {Name="It's a Wonderful Life", Year=1946},
                new Film {Name="American Beauty", Year=1999},
                new Film {Name="High Fidelity", Year=2000},
                new Film {Name="The Usual Suspects", Year=1995}
            };

            Action<Film> print =  //初始化,之后调用  创建可用的列表打印委托
                film => Console.WriteLine("Name={0}, Year={1}", film.Name, film.Year);

            Console.WriteLine("All films");
            films.ForEach(print);                                //调用print  打印原始列表
            Console.WriteLine();

            Console.WriteLine("Oldies");
            films.FindAll(film => film.Year < 1960)    //条件一直判断  创建过滤过的列表        
                 .ForEach(print);  //判断完再打印
            Console.WriteLine();

            Console.WriteLine("Sorted");
            films.Sort((f1, f2) => f1.Name.CompareTo(f2.Name));   //有两个变量
			//一直再比较  对原始列表排序
            films.ForEach(print);                          //输出结果
        }        
    }


为多部电影的名称和发行年份作为实力数据。 程序先打印原始列表,然后创建并打印
只包含老电影的过滤列表。最后,按电影名称排序,并打印原始列表


筛选1960前的电影 没有做任何修改,列表还是原始列表。对列表的每一部电影执行
Lambda表达式 看是否包含到已过滤列表中。
源代码将Lambda表达式作为一个方法实参来使用,实际编译器会创建下面的方法
private static bool SomeAutoGeneratedName(Film film)
{
return film.Year < 1960;
}
调用FindAll 方法会变成

films.FindAll(new Predicate<Film>(SomeAutoGnenratedName))


输出结果
All films
Name=Jaws, Year=1975
Name=Singing in the Rain, Year=1952
Name=Some like it Hot, Year=1959
Name=The Wizard of Oz, Year=1939
Name=It's a Wonderful Life, Year=1946
Name=American Beauty, Year=1999
Name=High Fidelity, Year=2000
Name=The Usual Suspects, Year=1995


Oldies
Name=Singing in the Rain, Year=1952
Name=Some like it Hot, Year=1959
Name=The Wizard of Oz, Year=1939
Name=It's a Wonderful Life, Year=1946


Sorted
Name=American Beauty, Year=1999
Name=High Fidelity, Year=2000
Name=It's a Wonderful Life, Year=1946
Name=Jaws, Year=1975
Name=Singing in the Rain, Year=1952
Name=Some like it Hot, Year=1959
Name=The Usual Suspects, Year=1995
Name=The Wizard of Oz, Year=1939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值