• c# lamp表达式例子


    首先提出一个问题:给你很多的姓名,让你找出一个姓氏的所有人,用程序实现。

    这个程序用很多方法可以实现,这篇博文中,我们就利用委托和Lambda表达式的方法实现。

    首先把所有的姓名放到一个集合中

    1 List<string> list = new List<string> { "田三涛", "刘起涵", "张晓轩", "田圣彤", "文筠彤", "刘起涵", "田优乔", "文嘉珊", "白田彤", "廖子棉", "张泽菲", "田赞鑫" };

    然后利用List<T>的FindAll(Predicate<T> match)方法找到所有符合姓“田”的字符串。Predicate<T> 是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true。 当前 List<T> 的元素被逐个传递给 Predicate<T> 委托,满足条件的元素被保存在返回的 List<T> 中。

    下面我分别用C#1.0,C#2.0,C#3.0的方法完成我们的程序。

    C#1.0

    先定义一个静态方法,代码如下:

    1 public static bool IsMatch(string s)
    2 {
    3     return s.IndexOf("田") == 0;
    4 }

    通过调用list.FindAll(IsMatch),找到所有姓氏为“田”的字符串。

    C#2.0

    直接写成如下代码即可

    1 list.FindAll(delegate(string s)
    2              {
    3                  return s.IndexOf("田") == 0;
    4              });

    C#3.0,Lambda表达式

    写成如下形式

    1 list.FindAll(s => s.IndexOf("田") == 0);

    完整的程序代码:

    01 class Program
    02    {
    03        static void Main(string[] args)
    04        {
    05            List<string> list = new List<string> { "田三涛", "刘起涵", "张晓轩", "田圣彤", "文筠彤", "刘起涵", "田优乔", "文嘉珊", "白田彤", "廖子棉", "张泽菲", "田赞鑫" };
    06  
    07            //C#1.0
    08            //List<string> result = list.FindAll(IsMatch);
    09  
    10            //C#2.0
    11            //List<string> result = list.FindAll(delegate(string s)
    12            // {
    13            //     return s.IndexOf("田") == 0;
    14            // });
    15  
    16            //C#3.0
    17            List<string> result = list.FindAll(s => s.IndexOf("田") == 0);
    18            foreach (var item in result)
    19            {
    20                Console.WriteLine(item);
    21            }
    22        }
    23  
    24        public static bool IsMatch(string s)
    25        {
    26            return s.IndexOf("田") == 0;
    27        }
    28    }

    通过比较C#1.0,C#2.0,C#3.0对程序的实现,我们发现C#越来越人性化,更加符合人的思维方式。

  • 相关阅读:
    Access的相关SQL语句
    决心创业
    [转]在.NET环境中使用单元测试工具NUnit
    [转]IE"单击以激活控件"网站代码解决法
    [转]C#中ToString格式大全
    [转]div中放flash运行30秒钟后自动隐藏效果
    Property和attribute的区别
    C++中的虚函数(virtual function)
    进程间通信方式
    关于页面传值的方法
  • 原文地址:https://www.cnblogs.com/mylife_001/p/2143252.html
Copyright © 2020-2023  润新知