linQ学习笔记之一

来源:互联网 发布:如何编写数据库引擎 编辑:程序博客网 时间:2024/05/16 19:16

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"));        }

0 0