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中有种延迟执行,就是当我们在fromselect时候,返回的结果并没有执行,当我们循环调用的时候才执行,这就是延迟执行,有时候为了立即执行,我们需要用到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()
    复制代码
  • 相关阅读:
    [python工具][1]sublime安装与配置
    [办公软件][1]cmder安装
    [持续集成学习篇]【1】[jenkins安装与配置]
    [python篇] [伯乐在线][1]永远别写for循环
    [python学习篇] uiautomator xiaocong
    SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)
    使用SharePoint 2010的母版页
    SharePoint 2013 入门教程--系列文章
    自定义 SharePoint 2010 快速启动栏和顶部链接栏
    SharePoint2010 自定义代码登录方法
  • 原文地址:https://www.cnblogs.com/fan101113/p/3396423.html
Copyright © 2011-2022 走看看