简介
- LINQ,语言继承查询(Language Integrated Query) 是一组用于C#和Visual Basic语言的扩展,它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
- 语言集成查询(LINQ)是一组技术的名称,这些技术建立在将查询功能直接集成到C#语言(以及Visual Basic和可能的任何其他.NET语言)的基础上。借助于LINQ,查询现在已是高级语言构造,就如同类、方法、事件等等。
- 对于编写查询的开发人员来说,LINQ最明显的"语言集成"部分是查询表达式。查询表达式是使用C#3.0中引入的声明性查询语法编写的。通过使用查询的语法,您甚至可以使用最少得代码对数据源执行复杂的筛选、排序和分组操作。您可以使用相同的基本查询表达式模式来查询和转换SQL数据库、ADO.NET数据集、XML文档和流以及.NET集合中的数据。
一、LINQ子句
查询表达式必须以From子句开头,以Select活Group子句结束,第一个From子句和最后一个Select子句或Group子句之间,可以包含一个或多个Where子句、let子句、Join子句、Orderby子句和Group子句,甚至还可以是From子句。
子句名称 | 解释 |
---|---|
from | 指定查询操作的数据源和范围变量 |
select | 指定查询结果的类型和表现形式 |
where | 指定筛选元素的逻辑条件 |
let | 引入用来临时保存查询表达式中的字表达式结果的范围变量 |
orderby | 对查询结果进行排序操作,包括升序和降序 |
group | 对查询结果进行分组 |
into | 提供一个临时标识符,join子句、group子句或select子句可以通过该标识符引用查询中的中间结果 |
join | 连接多个用于查询操作的数据源 |
二、基本语法
表名: Student
列名 | 类型 | 注释 |
---|---|---|
Id | int | id |
StuName | nvarchar(30) | 姓名 |
Sex | char(1) | 性别(0男1女) |
StuPhone | nvarchar(11) | 手机号 |
StuEmail | nvarchar(30) | 邮箱 |
StuAddress | nvarchar(30) | 住址 |
1.select子句
条件:查询Student表
//Linq语法
var cha= from n in Student
select n;
//SQL语法
SELECT * FROM Student;
2.where子句
条件:查询叫张三的学生
//Linq语法
var cha = from n in Student
where(n=>n.StuName="张三")
select n;
//SQL语法
SELECT * FROM Student where StuName = "张三";
3.let子句
//声明一个数组
int[] number = {1,2,3,4,5,6,7,8,9};
//创建一个范围变量来存储结果
var cha = from num in number
let n = num%2
where n == 0//判断数组中某一个数跟2相除能余0
select num;
4.Orderby子句
条件:查询年龄在15岁至20岁的学生信息
//LInq语法
var cha = from n in Student
where n.Sex>15 && n.Sex<20 //判断年龄条件
orderby n.Sex descending //ascending 升序 descending降序
select n;
//SQL语法
SELECT * FROM Student
where Sex BETWEEN 15 AND 20
Orderby asc; //asc升序 desc降序
5.Group子句
查询数组5-10中的数据,并根据能不能与2相磨分组
int[] number = {1,2,3,4,5,6,7,8,9};
var cha = from n in number
where n>5 && n<10
group n by n%2
6.into子句
查询数组5-10中的数据,取出能与2相磨的一组数据
int[] number = {1,2,3,4,5,6,7,8,9};
var cha = from n in number
where n>5 && n<10
group n by n%2 into g//临时标识符,存储数据
from sn in g
select sn;
6.Join子句
连表查出两个表满足条件的数据
int[] arrA= {1,2,3,4,5,6,7,8,9};
int[] arrB = {0,2,4,6};
var cha = from a in arrA
where a< 7 //a小于7
join b in arrB on a equals b //b满足a的条件
select a;