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中有种延迟执行,就是当咱们在from…select时候,返回的结果并无执行,当咱们循环调用的时候才执行,这就是延迟执行,有时候为了当即执行,咱们须要用到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()