八大语句:
1.from ... in子句:制定查询操作的数据源和范围变量。
2.select子句:指定查询结果的类型和表现形式。
3.where子句:筛选元素的逻辑条件,一般由逻辑运算符组成。
4.group ... by子句:对查询进行分组。
5.orderby子句:对查询结果进行排序,可以为“升序”或“降序”。
6.join子句:连接多个查询操作的数据源。
7.let子句:引入用于存储查询表达式中的子表达式结果的范围变量。
8.into子句:提供一个临时标识符,充当对join、group或select子句的结果。
1.简单查询
使用LINQ to SQL可以轻松查询数据库中的数据,比传统的SQL语句或存储过程查询数据库的方法更加简洁。
例如:
//简单查询
private void ShowData()
{
//1.创建LinqDB数据库的数据上下文实例
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
//2.使用LINQ查询表达式查询数据
var result = from user in db.UserInfo
where user.ID<10&&user.Username.Length>5
select user;
//3.设置数据源,并绑定数据
gvUserInfo.DataSource=result;
gvUserInfo.DataBind();
}
2.复杂查询
复杂查询在LINQ查询表达式中使用join子句联结多个相关的表。
例如:
//复杂查询
private void ShowData()
{
//1.创建LinqDB数据库的数据上下文实例
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
//2.使用LINQ查询表达式查询数据
var result = from user in db.UserInfo
join ur in db.UserRole on user.ID equals ur.UserID
join role in db.Role on ur.RoleID equals role.ID
where user.ID<10&&user.Username.Length>5
select new {user.Username,role.RoleName};
//3.设置数据源,并绑定数据
gv.DataSource = result;
gv.DataBind();
}
3.聚合查询
使用LINQ to SQL不但可以轻松查询数据库中的数据,而且还可以对查询结果进行聚合计算,如计算查询结果的和(sum),最大值(max),最小值(min),平均值(Average)
例如:
//聚合查询
private void ShowData()
{
//1.创建LinqDB数据库的数据上下文实例
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
//2.使用LINQ查询表达式查询数据
var result = from p in db.Product
where p.Price == db.Product.Max(c=>c.Price.Value)||p.Price==db.Product.Min(c=>c.Price.Value)
select new {p.ID,p.Name,p.Price,p.Remark};
//3.显示最高和最低价格的商品
gv.DataSource = result;
gv.DataBind();
}
4.分组查询
分组查询和SQL语句中的带有"group"关键字的查询功能类似,它能够把查询结果按照关键字进行分组。
//分组查询
private void ShowData()
{
//1.创建LinqDB数据库的数据上下文实例
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
//2.使用LINQ查询表达式查询数据
var result=from pu in (from u in db.UserInfo join p in db.Product on u.ID equals p.UserID select new {p.ID,p.Name,p.Price,p.UserID,u.Username})
group pu by pu.UserID;
//3.设置数据源,并绑定数据
foreach(var r in result)
{
GridView gv = new GridView();
gv.ID="gv"+r.Key.ToString();
gv.DataSource=r;
gv.DataBind();
//Pnl为Panel控件
Pnl.Controls.Add(gv);
Pnl.Controls.Add(new LiteralControl("<hr/>"));
}
}