linq基本操做

 

1、Linq有两种语法:html

一、  方法语法post

二、  查询语法this

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

好比如今有一个学生类code

复制代码
public class student

{

    public string username { get; set; }

    public int age { get; set; }

    public string sex { get; set; }

}
复制代码

 

咱们经过一个方法来添加不少同窗htm

复制代码
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对这个集合进行操做blog

首先咱们来查询全部的学生排序

A、查询语法:ip

   var list = GetStu(10);

    var result = from s in list

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

 

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

                    Select 变量

B、方法语法

 

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

 

    这就是方法语法,符合通常的C#语法

 

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

 

2、输出的方式

  输出的方式也有两种,咱们知道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()

 

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

一、条件选择查询(where)

   好比咱们要查询年龄大于26的学生,能够这样写

var result = from s in list

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

                 select s.username;

 

或者这样写

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

 

二、   查询排序

好比咱们要按照学生年龄倒序排列查询

复制代码
var result = from s in list

                     orderby s.age descending    //排序

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

                  select s.username;
复制代码

 

或者这样写

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

 

三、   数据查询分页显示

使用了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()
复制代码
相关文章
相关标签/搜索