扩展方法、委托和Lambda

本文介绍了如何使用LINQ及Lambda表达式从字符串数组中筛选出特定长度的元素,并对比了不同方法的实现方式。

举例演化Lambda

string[] names ={"Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David"};

//问题:从数组names中筛选字符长度为5的成员

//先声明一个返回类型为bool的静态函数

public static bool IsLengthFive(string s)

{

  return s.length == 5;

}

//Enumerable中的Where方法是扩展方法,要求返回类型为bool参数类型为String的委托实例

//a01为where方法提供命名函数

var nameA = names.where(IsLengthFive);

//a02为where方法提供匿名函数

var nameB = names.where(delegate(string s){return s.length == 5;});

//a03静态类中静态方法的调用

IEnumerable<string> nameC = Enumerable.where(names,delegate(string a){return a.length == 5});

//Lambda演化

///b01为扩展方法传递匿名方法(委托匿名实例)=>匿名函数使用Lambda表示式来表示(为扩展方法传Lambda)

var query = name.where(s=>s.length == 5)

         .orderBy(s=>s)

         .select(s=>s.ToLower())

!!!  Lambda表达式会被转化成匿名函数,匿名函数会转化为委托(匿名函数是因委托而存在的)

/////c01 Linq(查询表达式)//查询操作符,表达形式可以参照数据库的查询语句

 var queryB = from b in names

       where b.length == 5

      orderBy b

      select b.ToLower();

 

转载于:https://www.cnblogs.com/fllowerqq/p/8783984.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值