• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#lamp表达式例子

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

这个程序用很多方法可以实现,这篇博文中,我们就利用委托和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#越来越人性化,更加符合人的思维方式。

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

这个程序用很多方法可以实现,这篇博文中,我们就利用委托和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#越来越人性化,更加符合人的思维方式。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#环境发布时间:2022-07-10
下一篇:
[C#学习]关于C#连接Access数据库的几个问题发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap