揭开LINQ面纱(1)

    技术2022-05-20  34

    1.LINQ操作数组

     int[] arr = { 213, 454, 6477, 841, 1, 3, 46, 75, 692, 465, 134, 4156, 123, 456, 789 };            IEnumerable ie = arr.Select(p => p).Where(p => p > 50);            IEnumerator result = ie.GetEnumerator();            while (result.MoveNext())            {                Console.WriteLine(result.Current);            }

     

     

    2.LINQ扩展方法

     1)扩展方法一定要静态

     2)内部的方法权限不得高于当前的类的权限

     3)this 表示对该属性进行扩展s

     

     

     //静态类    public static class ExtraClass    {        // 静态特殊方法        public static string ToPascal(this string name)        {            return name.Substring(0, 1).ToUpper() + name.Substring(1).ToLower();        }        public static string ToPascal(this string name, int len)        {            return name.Substring(0, 1).ToUpper() + name.Substring(1, len).ToLower();        }

    }

     

     

     

    3.Lambda表达式

     

           //定义个委托        public delegate string deleTransfer(string s);//方法签名是字符串

     

     

               //.net FrameWork 1.0 委托--函数指针            deleTransfer trans = new deleTransfer(ToPascal);//委托指向方法            listBox1.Items.Add("委托" + trans("zhangsan"));

                //.net FrameWork 2.0 匿名方法            deleTransfer trans1 = delegate(string name) { return name.Substring(0, 1).ToUpper() + name.Substring(1).ToLower(); };            listBox1.Items.Add("匿名方法" + trans1("zhangsan"));

                //.net FrameWork 3.5 匿名方法 (参数列表)=>{方法体}            deleTransfer trans2 = s => s.ToUpper();            listBox1.Items.Add("3.5匿名方法" + trans2("zhangsan"));

     

           //将字符串的手写字母转化为大写字母        public string ToPascal(string name)        {            return name.Substring(0, 1).ToUpper() + name.Substring(1).ToLower();        }

     

     

     

    4.LINQ基本操作

     

                List<string> persons = new List<string>();            persons.Add("zhangsan");            persons.Add("lisi");            persons.Add("wangwu");            persons.Add("wanglaobo");            persons.Add("huangxiaoming");            persons.Add("zhangweijian");            persons.Add("xietingfeng");            //输出所有的            //var result=persons.Select(p => p);

                //输出首字母为w的人            //var result = persons.Where(p => p.StartsWith("w"));

              

               //根据名称进行排序            var result = persons.OrderBy(p => p);

     

    5.跳过

    List<string> persons = new List<string>();            persons.Add("zhang san");            persons.Add("li si");            persons.Add("wang wu");            persons.Add("wang laobo");            persons.Add("huangxiaoming");            persons.Add("zhangweijian");            persons.Add("xietingfeng");

               //跳过两个取出后面的值            var result=persons.Skip(2);

     


    最新回复(0)