Linq初级班 Linq to DataSet体验(单表、多表联合查询JOIN语法)

本文介绍了使用LinqToDataSet进行单表及多表查询的方法。通过具体的代码示例展示了如何利用LINQ轻松地在DataSet中执行筛选操作,并结合Lambda表达式实现了直观清晰的查询语句。

Linq初级班 Linq To DataSet体验

DataSet是包含内部数据表的对象,在这些内部数据表中,数据是临时存储并且可以被应用程序所使用.从本质上讲,DataSet是数据在本地内容中的缓存,且数据一般是从数据库中得到,这个缓存让我们可以在连接断开的模式下对DataSet中的数据进行更新,跟踪这些变化,并在应用程序重新连接时间这些变更保存到数据库中.

DataSet本身非常灵活且强大.它为应用程序提供了有效地使用数据库中的数据子集以及根据应用程序需要操作数据的能力,而且所有这些都可以在断开连接的状态下进行,然后再将变更回馈数据库.虽然DataSet具有这么多的灵活性,但是在查询的方法上却很欠缺.而LINQ to DataSet为开发人员提供了一整套查询能力,本文将讲解如何使用它进行DataSet查询,目录如下:
目录

1.单表查询

2.多表查询

1.单表查询

为了大家拿到代码好测试,我就不从数据库来获取数据了,直接用代码加载测试数据了.下面的示例演示用LINQ to DataSet筛选出所有的RoleId等于2的User:

方法语法:

代码

查询语法:

复制代码
var query = from u in ds.Tables["User"].AsEnumerable()
where u.Field<int>("RoleId"== 2
select 
new
{
Id 
= u.Field<int>("Id"),
Name 
= u.Field<string>("Name"),
RoleId 
= u.Field<int>("RoleId")
};
复制代码

运行结果:

2.多表查询

下面的示例是通过User表中的RoleId字段联接到Role表,并且查询出所有的普通用户来:

方法语法:

代码

查询方法:

复制代码
var query = (from u in ds.Tables["User"].AsEnumerable()
join r 
in ds.Tables["Role"].AsEnumerable()
on u.Field
<int>("RoleId") equals r.Field<int>("Id")
select 
new 
{
Id 
= u.Field<int>("Id"),
Name 
= u.Field<string>("Name"),
RoleId 
= r.Field<int>("Id"),
RoleName 
= r.Field<string>("Name")
}).Where(q 
=> q.RoleId == 2);
复制代码

运行结果:

小结:

使用LINQ to DataSet可以轻松的在DataSet的表间做查询,使用Lambda表达式,开发人员能更直观的清晰的组织查询语句,从而实现对DataSet的轻松查询.目前我正在自学LINQ,在此把自己的学习成果分享一下,仅提供给初学者作为参考用,如果有错误的地方请高手指出,我尽快改正~~



本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2011/01/01/1923758.html,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值