【极客营】LINQ进阶篇—LINQ To DataSet

系列课程视频地址:https://ke.qq.com/course/267924?flowToken=1006068

1、LINQ To ADO.NET

LINQ To ADO.NET是.NET4.5推出的重要技术之一,它包括LINQ To DataSet和LINQ To SQL两个相关技术,前者提供对DataSet、DataTable进行查询,后者通过LINQ对象模型直接数据库进行数据交互,比如查询、修改等操作。

DataSet是ADO.NET进行无连接模式数据库访问的关键元素,它可以显示缓存不同数据源中的数据,LINQ To DataSet基于并使用现有的ADO.NET 2.0体系结构生成,ADO.NET负责将数据读入到DataSet中,LINQ To DataSet查询在DataSet和DataTable对象中缓存的数据。

只在在填充DataSet后,才能使用LINQ To Dataset查询DataSet对象。LINQ To DataSet通过DataRowExtensions和DataTableExtensions类中的扩展方法来实现对DataSet的数据进行查询,大量简化了查询代码的编写。

LINQ中的大部分功能都是通过扩展方法来实现的,LINQ To DataSet使用DataRowExtensions

和DataTableExtensions两个关键类,它们是LINQ和DataSet提供联接的桥梁。DataTableExtensions提供的扩展方法将DataTable转化为LINQ可以查询的IEnumerable<T>类型,DataRowExtensions提供的扩展方法支持对DataRow字段(Field)数据的类型化读取和设置。

DataTableExtensions成员

成员

功能

AsDataView

创建并返回支持LINQ的DataView对象

AsEnumerable

返回一个IEnumerable<DataRow>对象,此对象可用在LINQ表达式或方法查询中

CopyToDataTable

在给定输入IEnumerable<T>对象的情况下,返回包含DataRow对象副本的DataTable

DataRowExtensions成员

成员

功能

Field

提供对DataRow中的每个列值的强类型访问

SetFiled

为DataRow中的指定列设置一个新值

2、查询单个数据表

一个DataSet通常包含一个或多个DataTable,同时也包括它们之间的关系集合,LINQTo DataSet是对一个或多个DataTable进行查询,这些表可以是来自单个的DataSet也可以是来自多个DataSet。

查询DataTable元素的主要步聚,在对DataTable进行数据查询时,必须使用DataTable类的AsEnumerable()方法,该方法将DataTable转换为一个类型为IEnumerable<DataRow>的数据集合。

从DataTable中获得的元素为DataRow,要进一步访问数据表的记录是具体字段数据,就需要使用DataRow的一个扩展泛型方法Field<T>()方法,通过它来获得DataRow的某字段数据,提供6个重载版本方法。

使用LINQToDataSet执行查询的步聚:

a.获取DataSet/DataTable数据源:LINQ To DataSet 通过LINQ查旬DataSet/DataTable中的数据,要准备数据源DataSet或DataTable,可以通过ADO.net技术从数据库中获取,也可以通过XML获取,或其他形式也可以,甚至在内存中直接创建并填充DataSet/DataTable对象

b.将DataTable转换成IEnumerable<T>类型,LINQ只能在IEnumerable<T>或IQueryable<T>接口对象上执行查询操作,而DataTable并没有实现这个两个接口,不能直接查询,可以通过DataTableExternsions扩展的AsEnumerable方法从DataTable中获取一个IEnumerable<T>对象

c.使用Linq语法编写查询,可以使用查询语句和方法语句对IEnumerable<T>执行允许的查询操作

例题:查询单个数据表

注意:LINQ To DataSet查询DataTable的数据可以简单分为两个部分,首先是将DataTable转化为IEnumerable<T>数据集合,然后对IEnumerable<T>数据进行操作。

3、用查询创建数据表

LINQ To DataSet通过DataTableExtensions类提供的扩展方法CopyToDataTable(),将从数据表中获得到的查询结果(类型为IEnumerable<DataRow>)直接复制到一个新的数据中,从而可以将查询绑定到界面控件(DataGridView或ListView)等操作。

例题:

准备数据集:

本例是控制台应用程序,只是将结果进行打印,在实际的开发中,往往是将复制的表数据据绑定到界面控制中。

完整内容请移步至视频:https://ke.qq.com/course/267924?flowToken=1006068

猜你喜欢

转载自blog.csdn.net/geek_nanji/article/details/79400976