标签:
项目中加入了很多新内容的学习,LINQ就是非常简单却实用的内容,让我们对数据的操做更加便捷。接下来就和大家简单的介绍一下LINQ。
一、概述
LinQ(Language-Integrated Query,语言集成查询)可以为C#和VB提供强大的查询功能。LinQ引入了标准的、易于学习的查询和更新数据模式,可以对其技术进行扩展以支持几乎任何类型的数据存储。VS包含LINQ提供程序的程序集,这些程序集支持将LINQ与.NET Framework集合、sql sever数据库、ADO.NET数据集合XML文档一起使用,从而在对象领域和数据领域之间架起了一座桥梁,解决了面对对象与数据访问两个领域长期分裂,各自为政的问题。
LINQ主要包括LINQ to SQL、LINQ to DataSet、LINQ to Object和LINQ to XML四种关键技术。
二、优点
使用LINQ有很多优点,解决了SQL编码体验落后的弊端,能够更加方便高效的解决问题。
1、无需复杂学习过程即可上手
2、编写更少代码即可创建完整应用。
3、更快开发错误更少的应用程序。
4、无需求助编程技巧就可合并数据源。
5、让新开发者开发效率更高。
三、实战应用
对LINQ有了一个简单的了解, 让我们来用几个实例来阐述一下它的主要应用方法。
1、基本方法:选择、排序、分组
首先,声明一个集合:
//person泛型集合 List<string> person = new List<string>(); person.Add("zhang san"); person.Add("zhang sisi"); person.Add("li si"); person.Add("wang wu"); person.Add("wang huanhuan"); person.Add("li hong"); person.Add("xu jinglei"); person.Add("zhang xinyu");
////1、输出所有元素 var result = person.Select(p => p); //2、输出开头是2的人 var result = person.Where(p => p.StartsWith("z")); var result = person.Select(p => p).Where(p => p.StartsWith("z")); var result = person.Where(p => p.StartsWith("z")).Select(p => p); //3、排序 //首字母排序 var result = person.OrderBy(p => p); //按照名字最后一个字母排序 var result = person.OrderBy(p => p.Substring(p.Length - 1, 1)).Select(p => p); //4、分组 按照姓名来分组--取出姓名中的空格前的部分 var result = person.GroupBy(p => p.Split(new char[] { ' ' })[0]); foreach (var group in result) { Console.WriteLine("姓:" + group.Key); foreach (var name in group) { Console.WriteLine("\t" + name); } Console.WriteLine(); } }
·聚合类:count、Max/Min、Average
·排序类:thenBy
·分区类:Take、TakeWhile、Skip、SkipWhile
·集合类:Distinct
·生成类:Range、Repeat
int[] arr = { 343, 45, 45, 67, 6, 7, 453, 34, 76, 4564, 345, 3, 5 }; //高级方法 //1、聚合类 Console.WriteLine("arr的最大值" + arr.Max()); //4546 Console.WriteLine("arr的最小值" + arr.Min()); //3 Console.WriteLine("arr的平均值" + arr.Average ()); //平均值 Console.WriteLine("arr的和" + arr.Sum()); //求和 Console.WriteLine("arr的个数" + arr.Count()); //个数 //2、排序类 var result = arr.OrderBy(p => p.ToString().Substring(0, 1)); var result = arr.OrderBy(p=>p.ToString().Substring(0,1)).ThenBy(p=>p); //二次排序 //分区类 var result = arr.Skip(3).Take(3); //跳过3个值,取三个值 var result = arr.SkipWhile(p => p > 7); //6, 7, 453, 34, 76, 4564, 345, 3, 5 var result = arr.TakeWhile(p => p > 7); // 343, 45, 45, 67 var result = System.Linq.Enumerable.Range(10,50); //生成连续序列 --生成类 var result = System.Linq.Enumerable.Repeat(10, 50); //生成重复序列--生成类
标签:
原文地址:http://blog.csdn.net/u010924897/article/details/43635709