1. from in子句:指定查询操作的数据源和变量范围
//创建LinqDB数据库上下文实例 DataClasses1DataContext db = new DataClasses1DataContext(); //使用lINQ查询表达式查询数据 var query = from stu in db.student join m in db.mark on stu.sid equals m.sid select new { 姓名=stu.sname,科目=m.subject,成绩=m.score }; //设置数据源并绑定数据 GridView1.DataSource = query; GridView1.DataBind();
2. select子句:指定查询结果的类型和表现形式
3. where子句:删选元素的逻辑条件,一般由逻辑运算符组成
4. groupby子句:对查询进行分组
DataClasses1DataContext db = new DataClasses1DataContext(); var query = from m in db.mark group m by m.mid into g orderby g.Key select new { g.Key, 成绩 = g.Max(c => c.score) }; GridView1.DataSource = query; GridView1.DataBind();
5. orderby子句:对查询结果排序,可以为升序或降序
降序:
DataClasses1DataContext db = new DataClasses1DataContext(); var q = db.mark .OrderByDescending(P => P.score ) .ToList(); GridView1.DataSource = q; GridView1.DataBind();或者:
升序:
//创建LinqDB数据库上下文实例 DataClasses1DataContext db = new DataClasses1DataContext(); //使用lINQ查询表达式查询数据 var query = from m in db.mark join stu in db.student on m.sid equals stu.sid orderby m.score ascending select new { 姓名 =stu.sname, 科目 = m.subject, 成绩 = m.score }; //设置数据源并绑定数据 GridView1.DataSource = query; GridView1.DataBind();
或者
DataClasses1DataContext db = new DataClasses1DataContext(); var q = db.mark .OrderBy(P => P.score ) .ToList(); GridView1.DataSource = q; GridView1.DataBind();
6. join子句:连接多个查询操作的数据源
//创建LinqDB数据库上下文实例 DataClasses1DataContext db = new DataClasses1DataContext(); //使用lINQ查询表达式查询数据 var query = from stu in db.student join m in db.mark on stu.sid equals m.sid select new { 姓名=stu.sname,科目=m.subject,成绩=m.score }; //设置数据源并绑定数据 GridView1.DataSource = query; GridView1.DataBind();
7. let子句:引入用于储存查询表达式中的子表达式结果的范围变量
DataClasses1DataContext db = new DataClasses1DataContext(); var q = from m in db.mark let n = m.score where n >90 select m ; GridView1.DataSource = q; GridView1.DataBind();
8. into子句:提供一个临时标志符,充当对group,select,join,子句的结果
用于select:
DataClasses1DataContext db = new DataClasses1DataContext(); var q = from stu in db.student where stu.sid > 2 select new { 学号 = stu.sid, 姓名 = stu.sname } into s orderby s.学号 select s; GridView1.DataSource = q; GridView1.DataBind();
附数据库代码:
use master go if exists(select * from sys.databases where name='Student') drop database Student create database Student go use Student if exists(select * from sys.tables where name='student') drop database student create table student ( sid int primary key identity(1,1) , sname varchar(10) not null ) if exists(select * from sys.tables where name='mark') drop database mark create table mark ( mid int primary key identity(1,1) , subject varchar(10) not null, score int not null, sid int references student(sid) ) insert into student values ('林彦俊') insert into student values ('灵超') insert into student values ('尤长靖') insert into student values ('木子洋') insert into mark values ('html',100,1) insert into mark values ('sql',90,1) insert into mark values ('html',10,2) insert into mark values ('sql',60,2) insert into mark values ('html',99,3) insert into mark values ('sql',91,4) select *from student select * from mark
数据库运行结果: