LinQ查询

      项目中加入了很多新内容的学习,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();
            }
        }

      2、高级查询方法

      ·聚合类: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);   //生成重复序列--生成类







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值