LINQ TO SQL

Posted 再叙。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINQ TO SQL相关的知识,希望对你有一定的参考价值。

LINQ就是语言集成查询可以代替数据库,用起来比数据库更简洁更简便,当然这是他的优点。他的重点呢就是查询表达式。
LINQ查询表达式:
主要包含三个部分:
1、获取数据源
2、创建查询
3、执行查询
匿名方法:
在2.0之前,声明委托的唯一方法就是使用命名方法。在3.0以及更高版本中lambda表达式取代了匿名方法
lambda表达式:
1、他呢是一个匿名函数,包含表达式和语句可以用于创建委托
2、lambda表达式"x=>x * x"读作"x goes to x times x"
查询语法和方法语句:
咱们遵循三要素,首先你要有一个数据源。
string[] Devices= {"电视" ,"电冰箱","洗衣机","电话","微波炉"};
然后就是查询语法,
1、select:
var SelectDevices = from p in Devices
select p;
然后就是一个方法语句用咦个forerch就可以了
foreach (string dev in SelectDevices)
{
Console.WriteLine("字母是:{0}",dev);
}
下面是一些复杂一点的查询操作我觉得只要学过数据库的在来学linq就已经很容易写查询语句了。
2、Where:
string[] Devices= {"a" ,"b","c","d","e"};
var SelectDevices = from device in Devices
where p.StartsWith("b")
select p;
foreach (string dev in SelectDevices)
{
Console.WriteLine("字母是:{0}",dev);
}
还是咱们的三要素,就是和数据库一样中间夹杂了一个where条件
3、OrderBy
string[] Devices= {"a" ,"b","c","d","e"};
var SelectDevices = from p in Devices
where p.StartsWith("b")
select p;
foreach (string dev in SelectDevices)
{
Console.WriteLine("字母是:{0}",dev);
}
4、连接查询
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
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 < 200
select new { ID = user.ID, //显示ID,用户名,电子邮箱和角色
UserName = user.Username,
Email = user.Email,
RoleName = role.RoleName
};
dl_List.DataSource = result;
dl_List.DataBind();

5、聚合查询
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
var result = from p in db.Product
select p; //计算商品最高价格和最低价格
decimal maxPrice = result.Max(p => p.Price.Value);
decimal minPrice = result.Min(p => p.Price.Value); //显示最高价格和最低价格
Response.Write(string.Format("最高价格:{0},最低价格:{1}",maxPrice,minPrice));
6、分组查询
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
var result = from p in db.Product
group p by p.CategoryID into g
orderby g.Key
select new
{
//获取商品和分类名称
ProductName =g.First().Name,
CatagoryName = (from u in db.Category
where u.ID==g.Key
select u
).First().Name
}; //数据绑定
dl_List.DataSource = result;
dl_List.DataBind();

存储过程:
1、添加
create proc Pr_InsertCategory (
@Name varchar(50)=null,
@ParentID int=null,
@ShowOrder int=null,
@Remark text=null )
as
insert into Category ([Name],ParentID,ShowOrder,Remark) values
(@Name,@ParentID,@ShowOrder,@Remark)
go
添加的执行方法:
string name = TextBox2.Text;
int id = int.Parse(TextBox3.Text);
tb_ABc tb = new tb_ABc()
{
sname = name,
Area_ID = id
};
dc.tb_ABc.InsertOnSubmit(tb);
dc.SubmitChanges();
bind();
用存储过更简洁
dc.p_AddCreate(name,id);
bind();
2、删除
create proc DeleteCategroy
@ID int=null
as
delete from Category where [email protected]
go
删除的执行方法:
(要调用表的"RowDeleting"事件)
string id = GridView1.DataKeys[e.RowIndex].Value.ToString() ;
var Restr = from a in dc.tb_ABc
where a.Sid.ToString() == id
select a;
dc.tb_ABc.DeleteAllOnSubmit(Restr);
dc.SubmitChanges();
bind();
温馨提示
: if (IsPostBack)
{
return;
}

 

以上是关于LINQ TO SQL的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 原始查询转换为 Linq

sqllinq和lambda查询语句比较inner join和group by组合使用及匿名类型的处理

LINQ to SQL / LINQ to Collections 性能

Linq to SQL 还是 Linq to DataSet?

LINQ to SQL class LINQ to sql Objects?

Linq To SQL和Linq To Object的批量操作InsertAllOnSubmit介绍