千家信息网

LINQ to DataSet如何实现查询

发表于:2026-11-05 作者:千家信息网编辑
千家信息网最后更新 2026年11月05日,这篇文章主要介绍了LINQ to DataSet如何实现查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。LINQ to DataSe
千家信息网最后更新 2026年11月05日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中的扩展方法:

  1. public static EnumerableRowCollection<DataRow>
    AsEnumerable(this DataTable source)

  2. public static DataView AsDataView(this DataTable table)

  3. public static DataView AsDataView<T>
    (this EnumerableRowCollection<T> source) where T : DataRow

  4. public static DataTable CopyToDataTable<T>
    (this IEnumerable<T> source) where T : DataRow

  5. public static void CopyToDataTable<T>(this IEnumerable<T> source,
    DataTable table,LoadOption options) where T : DataRow

  6. public static void CopyToDataTable<T>(this IEnumerable<T> source,
    DataTable table,LoadOption options,FillErrorEventHandler errorHandler)
    where T : 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如何实现查询"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

查询 数据 版本 方法 更新 原始 篇文章 参数 两个 之间 元素 内容 对象 序列 数据源 结果 支持 相同 一行 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技网 科技创新与互联网经济 远信互联网科技 奇酷互联网科技公司 上海致骋互联网科技 互联网科技小额贷款 四川狮子座互联网科技 科技大学互联网专业好不好 海南科技产业互联网平台 青岛中康互联网医疗科技有限公司 宁波青枫互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 晓花互联网科技有限公司网址 烟台灵鸽互联网科技有限公司 上海科技产业互联网平台 本届互联网大会上的黑科技 艺电能源互联网科技有限公司招聘 云南互联网科技学费 北京天晋互联网科技有限公司 广西泛欧互联网科技有限公司 互联网科技 互联网科技公司 云信互联网科技有限公司 互联网科技未来 福州新华互联网科技学校 知乎 中和天地互联网科技有限公司 全球科技与互联网公司市值变化 好易买互联网科技 知域互联网科技有限公司官网 山东亿川互联网科技有限责任公司
0