linQ学习笔记之一

linq解决的问题

1.编程语言中的数据类型与数据库中的数据类型形成的两套体系

2.SQL编码体验落后

3.SQL和XML都有各自的查询语言,而对象没有自己的查询语言


linq简单的集合查询和foreach的区别

 int[] arr = { 123, 12, 1, 123, 154, 15, 5456, 12, 5, 5, 1516 };
            //ArrayList re = new ArrayList();
            //for (int i = 0; i < arr.Length; i++)
            //{
            //    if (arr[i] > 50)
            //    {
            //        re.Add(arr[i]);
            //    }
            //}

            //for (int a = 0; a < re.Count; a++)
            //{
            //    System.Console.WriteLine(re[a]);
            //    System.Diagnostics.Debug.Write(re[a]);
            //}
            //Linq查询集合中大于50的数
            IEnumerable ie = arr.Select(p=>p).Where(p=>p>50);
            //输出语句 
            IEnumerator resilt = ie.GetEnumerator();
            while (resilt.MoveNext())
            {
                Console.WriteLine(resilt.Current);
            }

拓展方法

/// <summary>
    /// 创建一个静态的类,拓展类
    /// </summary>
    public static class ExtraClass
    {
        /// <summary>
        /// 拓展方法 必须是静态的
        /// </summary>
        /// <param name="s">对哪一个属性进行的拓展</param>
        /// <returns></returns>
        public static string ToPascal(this string s)
        {
            return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
        }
        //为IEnumerable提供输出方法
        public static void Print(this IEnumerable ie)
        {
            IEnumerator IEU = ie.GetEnumerator();
            while (IEU.MoveNext())
            {
                Console.WriteLine(IEU.Current);
            }
        }

    }

private void button1_Click_1(object sender, EventArgs e)
        {
            //拓展方法
            string a = "asdfgZXCVV";
            //转换成大写
            Console.WriteLine(a.ToUpper());
            //转换成小写
            Console.WriteLine(a.ToLower());
            //首字母大写,其他小写(拓展方法)
            Console.WriteLine(a.ToPascal());

        }
1.拓展方法是一种特殊的静态方法
2.拓展方法必须在静态类中定义
3.拓展方法的优先级低于同名的类方法
4.除非必须不要滥用拓展方法


Lambda表达式的由来

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

        private void button2_Click(object sender, EventArgs e)
        {
            //Lambda来源
            //.net FrameWork 1.0委托---函数指针
            Excsd es = new Excsd(ToPascal);//委托指向方法ToPascal
            Console.WriteLine(es("sadsada"));
            //.net FrameWork 2.0匿名方法
            Excsd ed = delegate(string s)
            {
                return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
            };
            Console.WriteLine(ed("sadsada"));
            //.net FrameWork 3.5 匿名方法
            Excsd exd = (s) => (s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower());
            Excsd excd = (s) =>s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
            Console.WriteLine(exd("asdsa"));
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值