zoukankan      html  css  js  c++  java
  • linq基本操作

    一、Linq有两种语法:

    1、  方法语法

    2、  查询语法

    下面举个例子看看这两种方法的区别

    比如现在有一个学生类

    public class student

    {

        public string username { get; set; }

        public int age { get; set; }

        public string sex { get; set; }

    }

    我们通过一个方法来添加很多同学

    public IList<student> GetStu(int n)

        {

            IList<student> stuList = new List<student>();

            for (int i = 0; i < n; i++)

            {

                student stu = new student();

                stu.age = 25 + i;

                stu.sex = "男" + i;

                stu.username = "张三" + i;

                stuList.Add(stu);

            }

            return stuList;

    }

    那么这个方法返回的就是一个list集合,下面我们就可以通过linq对这个集合进行操作

    首先我们来查询所有的学生

    A、查询语法:

       var list = GetStu(10);

        var result = from s in list

                 select new { stuname=s.username,sex=s.sex,age=s.age};

    这是linq常用的语法from 变量 in 集合

                        Select 变量

    B、方法语法

        var result1 = list.Select(s1 => new { username = s1.username, age = s1.age, sex = s1.sex });

        这就是方法语法,符合一般的C#语法

    这两种方法的执行结果是一样的,唯一的区别就是语法

    二、输出的方式

      输出的方式也有两种,我们知道linq主要对集合进行操作的,所以一般都需要循环输出

     第一种输出方式:

             string stt = null;

            foreach (var sa in result3)

            {

                stt += sa.username;

            }

            Response.Write(stt);

    这是我们经常用到的foreach循环

    第二种输出方式:

      result.ToList().ForEach(s => { Response.Write(s.stuname+s.sex+s.age); });

    这种方式很简介,直接调用ForEach方法,方法体内是一个limba表达式

    另外说明下ToList()方法作用,在linq中有种延迟执行,就是当我们在from…select时候,返回的结果并没有执行,当我们循环调用的时候才执行,这就是延迟执行,有时候为了立即执行,我们需要用到ToList()

    三、下面就来简单说说linq常用的几种查询

    1、条件选择查询(where)

       比如我们要查询年龄大于26的学生,可以这样写

    var result = from s in list

                         where s.age>26     //条件查询

                     select s.username;

    或者这样写

       var result2 = list.Where(s => s.age > 25);   //条件查询  

    2、   查询排序

    比如我们要按照学生年龄倒序排列查询

    var result = from s in list

                         orderby s.age descending    //排序

                         where s.age>26     //条件查询

                      select s.username;

    或者这样写

    var result3 = list.OrderByDescending(s1 =>s1.age);

    3、   数据查询分页显示

    使用了Skip和Take方法

    Skip作用跳过指定数量的元素

    Take的作用是返回指定位置连续数量的元素

          var list1 = GetList(50);

            for (int i = 0; i < 5; i++)

            {

                Response.Write("这是第" + (i + 1) + "页");

                var result = from s in list.Skip(i * 10).Take(10)

                             select s;

                result.ToList().ForEach(s => { Response.Write(s); });

        }

    这就是分5页,每页显示10个的分页方式

    4|、返回单个元素

       用到First(),FirstOrDefault(),single,singleOrDefault()

       First():返回第一个元素,如果没有,则抛出异常

       FirstOrDefault():返回第一个元素,如果没有,则返回空,一般情况下会返回null

       Single:返回的是元素中唯一的元素,如果小于一条,则抛出异常

       singleOrDefault:返回的是元素中唯一的元素,如果小于一条,则返回空,通常是null

         var result1 = from r in list1

                          select r;

            var rt = result1.First();

    result1.Single()

    上面只是简单的介绍了下linq的用法,具体项目中用到了,在具体对待

    下载:/Files/shuang121/linq的基本操作.doc

          linq to sql操作

  • 相关阅读:
    testng 控制case运行顺序
    0518 Scrum 项目 5.0
    0506团队项目Scrum 项目1.0
    0429团队项目Scrum团队成立
    0429团队项目对师姐的软件的一些改进
    0422团队项目:二次开发
    0511团队项目2.0产品product backlog
    实验三进程调度模拟程序
    0517 SCRUM团队项目4.0
    0512 SCRUM团队项目3.0
  • 原文地址:https://www.cnblogs.com/ziyandeyanhuo/p/7877533.html
Copyright © 2011-2022 走看看