lambda 是由net framework 1.0 委托
net framework 2.0 匿名方法 过度过来的。
//framework 1.0函数指针
//deleTransfer trans = new deleTransfer(ToPascal);//委托指向方法ToPascal
//Console.WriteLine(trans("asdd"));
//framwrok 2.0 匿名函数
//deleTransfer trans = delegate(string s) { return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower(); };
//Console.WriteLine(trans("qweee"));
//net framework 3.5匿名方法
deleTransfer trans = (s) => (s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower());
Console.WriteLine(trans("adfee"));
//参数列表中参数类型可以是明确的类型 ,或者推断类型
//如果是推断类型,则参数的数据类型将有编译器上下文来推断。
lambda表达式:
最基本的lambda表达式:
(参数列表)=>(方法体)
//linq to object 泛型集合
List<string> person = new List<string>();
person.Add("zhang san");//集合添加数据
person.Add("li si");//集合添加数据
person.Add("wang wu");//集合添加数据
person.Add("zhao liu");//集合添加数据
//输出person中所有元素
var result=person.Select(p => p);
result.Print();
//为IEnumerable提供输出方法
public static void Print(this IEnumerable<string> ie)
{
//获取可遍历的接口
IEnumerator result = ie.GetEnumerator();
Console.WriteLine("\n-----------------\n");
while (result.MoveNext())
{
Console.WriteLine(result.Current);
}
Console.WriteLine("\n-----------------\n");
}
IEnumerable、IEnumerator的区别:
IEnumerable只包含一个方法GetEnumeraTor(),他返回一个循环访问集合的IEnumberator对象。
IEnumberator是一个真正的集合访问器,没有他,就不能使用foreach语句遍历集合和数组。
MoveNext方法是将游标的内部位置向前移动,要进行循环遍历,不向前移动怎么能行。
![](https://img.haomeiwen.com/i2655509/06100acf12eb6f96.png)
![](https://img.haomeiwen.com/i2655509/482766184728b3a0.png)
![](https://img.haomeiwen.com/i2655509/21ec6ec1e75267ea.png)
第二种方法
![](https://img.haomeiwen.com/i2655509/b497ab43dfbe1f48.png)
![](https://img.haomeiwen.com/i2655509/2a3e8432ac2c81ee.png)
order by
![](https://img.haomeiwen.com/i2655509/f84636067f309b7b.png)
![](https://img.haomeiwen.com/i2655509/dd50b646384b7e23.png)
![](https://img.haomeiwen.com/i2655509/ec67c4cf5ad41db5.png)
![](https://img.haomeiwen.com/i2655509/6564dd149b12020e.png)
网友评论