这里介绍使用LINQ to DataSet查询数据,其功能主要是通过System.Data.DataRowExtions和System.Data.DataTableExtensions两个静态类中的扩展方法来公开的。
在向咱们具体介绍LINQ to DataSet查询之前,首要让咱们了解下LINQ to DataSet主要是供给对离线数据的支撑,然后全面介绍LINQ to DataSet查询。
LINQ to DataSet主要是供给对离线数据的支撑,只要在填充DataSet之后,咱们才干运用LINQ to DataSet查询数据。其功用主要是经过System.Data.DataRowExtions和System.Data.DataTableExtensions两个静态类中的扩展办法来揭露的。LINQ to DataSet是LINQ to ADO.Net中的一部分,但这部分所占比重十分小,内容也比较少。
下面就让咱们首要来看看DataTableExtensions中的扩展办法:
- publicstaticEnumerableRowCollection<DataRow>
AsEnumerable(thisDataTablesource)- publicstaticDataViewAsDataView(thisDataTabletable)
- publicstaticDataViewAsDataView<T>
(thisEnumerableRowCollection<T>source)whereT:DataRow- publicstaticDataTableCopyToDataTable<T>
(thisIEnumerable<T>source)whereT:DataRow- publicstaticvoidCopyToDataTable<T>(thisIEnumerable<T>source,
DataTabletable,LoadOptionoptions)whereT:DataRow- publicstaticvoidCopyToDataTable<T>(thisIEnumerable<T>source,
DataTabletable,LoadOptionoptions,FillErrorEventHandlererrorHandler)
whereT:DataRow
从界说中就能够看出这三类主要是供给DataTable、DataView和IEnumerable三者之间的转化。咱们都知道LINQ to Object查询主要是对IEnumerable序列进行的操作,这样就使得DataTable、DataView和LINQ之间建立了一个转化桥梁。
因而,在咱们需求将DataTable应用于LINQ to DataSet查询是要先调用AsEnumerable完结DataTable到LINQ的转化。假如咱们需求将LINQ to DataSet查询的成果进行数据绑守时咱们需求调用AsDataView的泛型版来完结LINQ到DataView的转化。当然咱们也能够运用CopyToDataTable来进行LINQ到DataTable的转化。
留意:假如在咱们完结了DataTable到LINQ(IEnumerable) 的转化之后(也便是调用AsEnumerable扩展办法),需求进行两个DataRow序列的调集操作如 Distinct,Union,Except,Intersect,SequenceEqual,这些操作都需求对数据源中的元素进行持平比较,因为缺省情况下都是调用数据源中的元素的GetHashCode和Equals操作来判别的,关于DataRow而言便是判别目标的引证是否持平,这样可能会导致咱们不希望的成果(DataRow里边的数据内容是相同的,但不是同一个目标),所以咱们要运用 Distinct,Union,Except,Intersect,SequenceEqual带IEqualityComparer的重载版别,运用 System.Data.DataRowComparer.Default作为参数。这个比较器类是.Net3.5专门为LINQ to DataSet新添加的,用于比较DataRow的值的,它是经过先比较DataColumn的数量,然后运用该列中类型的Equals办法进行比较。
不带LoadOptions参数的CopyToDataTable办法将主动为每一行的每一个字段创立(更新)原始版别和当时版别,带有 LoadOptions参数的CopyToDataTable重载版别能够让你指定是创立(更新)原始版别或是当时版别,或许两者都填充。 LoadOptions选项有下面三个选项值能够挑选:
◆OverwriteChanges: 创立(更新)每一列的当时值和原始值
◆PreserveChanges: 创立(更新)每一列的原始值
◆Upset: 创立(更新)每一列的当时值
以上介绍LINQ to DataSet查询。
【修改引荐】
- LINQ查询操作经验总结
- LINQ遍历多个数组深化分析
- Linq查询Access数据文件浅谈
- LINQ构建结构规划学习笔记
- LINQ重要组成部分简介