- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语言集成查询(LINQ)之LINQ to DataSet
语言集成查询(LINQ)之LINQ to DataSet LINQ to DataSet LINQ to DataSet概述 LINQ to DataSet概述 查询数据集 查询数据集 单表查询 泛型Field和SetField方法 Field的空值判断 Field的空值判断 比较DataRow 通过查询创建数据表 数据绑定和LINQ to DataSet * * ? LINQ定义了一组可以在.NET Framework 3.0编程语言中使用的通用标准查询运算符。使用这些标准查询运算符可以投影、筛选和遍历内存中的集合或数据库中的表 ? 简化查询,不必使用单独的查询语言 ? VS 2008 IDE的编译时检查、IntelliSense和静态类型 ? LINQ to ADO.NET 包括两种独立的技 术: LINQ to DataSet 和LINQ to SQL 使用LINQ to DataSet 可以对DataSet执行丰富而优化的查询,而使用LINQ to SQL 可以直接查询SQL Server 数据库架构 ? 用LINQ to DataSet 可以更快更容易地查询在DataSet 对象中缓存的数据 ? LINQ to DataSet 也可用于查询从一个或多个数据源合并的数据 ? LINQ to DataSet 功能主要通过DataRowExtensions 和DataTableExtensions 类中的扩展方法公开 ? LINQ to DataSet 基于并使用现有的ADO.NET 2.0 体系结构生成,在应用程序代码中不能替换ADO.NET 2.0。现有的ADO.NET 2.0 代码将继续在LINQ toDataSet 应用程序中有效 ? DataSet优点: – DataSet是ADO.NET 所基于的断开连接式编程模型的关键元素,使用它可以显式缓存不同数据源中的数据 – 在表示层上,DataSet 与GUI 控件紧密集成,以进行数据绑定。在中间层上,它提供保留数据关系形状的缓存并包括快速简单查询和层次结构导航服务 – 用于减少对数据库的请求数的常用技术是使用DataSet 以便在中间层进行缓存,例如ASP.NET应用 – DataSet 的另一个有用特征是允许应用程序将数据子集从一个或多个数据源导入应用程序空间。然后,应用程序可以在内存中操作这些数据,同时保留其关系形状。 ? 限制: – Select 方法可用于筛选和排序,GetChildRows 和GetParentRow 方法可用于层次结构导航。但对于更复杂的情况,开发人员必须编写自定义查询。这会使应用程序性能低下并且难以维护 ? LINQ 查询操作包括三个操作: – 获取数据源 ? 实现IEnumerable(T)泛型接口的数据源可以通过LINQ 进行查询。对DataTable 调用AsEnumerable 将返回实现泛型IEnumerable(T)接口的对象, 作为LINQ to DataSet 查询的数据源 – 创建查询 ? 此查询变量不执行任何操作,也不返回任何数据;它只存储查询信息。创建查询后必须执行该查询以检索任何数据 – 执行查询 ? 查询的执行将推迟到在foreach 或For Each 循环中循环访问查询变量之后进 行。这称为“延迟执行”? 与返回一系列值的延迟查询相反,返回单一实例值的查询将立即执行。Count、Max、Average 和First 是一些单一实例查询的示例 数据源 使用DataRowExtension.Field 方法读取字段值 DataSet ds = new DataSet(); FillDataSet(ds); DataTable orders = ds.Tables[SalesOrderHeader]; var query = from order in orders.AsEnumerable() where order.Fieldbool(OnlineOrderFlag) == true select new { SalesOrderID = order.Fieldint(SalesOrderID), OrderDate = order.FieldDateTime(OrderDate), SalesOrderNumber = order.Fieldstring(Sales
文档评论(0)