linq第三篇

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 person = new List();

            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 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方法是将游标的内部位置向前移动,要进行循环遍历,不向前移动怎么能行。



StartsWith  选取首字母相同的元素


取出姓张的所有人

第二种方法


创建一个方法,用来判断

order by


排序


按照字母进行排序


你可能感兴趣的:(linq第三篇)