新Orcas语言特性:扩展方法(4)

作者:Scott Guthrie 来源:Scott Guthrie博客中文版 时间:2007-09-23 12:49:00 

使用场景二:对XML文件使用LINQ扩展方法

你手工在内存里创建一个硬写(hard-coded)的数据集合大概是很少见的。更有可能的是,你会从一个XM文件,数据库,或web服务里获取数据。

假定我们在硬盘上有一个XML文件,包含下面这样的数据:

很明显地,我可以使用现有的 System.Xml APIs 来装载这个XML文件进一个DOM,然后访问它,或者使用一个层次较低的XmlReader API ,自己对之手工分析。或者,在 Orcas中,我现在也可以使用支持标准的LINQ扩展方法的System.Xml.Linq 实现(即 XLINQ),更优雅地分析和处理XML。

下面的代码例子展示了如何使用LINQ来获取所有包含一个子节点的值的首字母为“S”的<person> XML元素:

注意,它使用了跟内存中对象例子中一模一样的 Where() 扩展方法。现在它返回一个“XElement”元素序列,XElemen是没有类型的XML节点元素。或者我也可以重写查询表达式,通过LINQ的 Select() 扩展方法来构造数据形状,提供一个使用了新的对象初始化器句法的Lambda 表达式来填充同样的“Person”类,跟我们第一个内存中的集合的例子一样:

上面的代码会做需要打开,分析,和过滤XML,然后返回一个强类型的Person对象序列所有的工作,不需要什么映射或持久的文件来映射数值,我只是在上面的LINQ查询式里直接指明了从XML到对象的构形而已。

我也可以和前面一样使用同样的Average() 和 Max() LINQ扩展方法来计算XML文件中<person>元素的平均年龄,以及最大年龄,象这样:

我不用手工分析XML文件,XLINQ 不仅可以为我处理分析,它在估算LINQ表达式时,也可以使用低层的XMLReader,而不是使用DOM来分析文件。这意味着它是迅速之极,而且不分配很多内存。

标签:Orcas,扩展
0
投稿

猜你喜欢

  • C#实现远程连接ORACLE数据库的方法

    2024-01-16 05:59:20
  • SQLServer只赋予创建表权限的全过程

    2024-01-20 06:49:53
  • web前端开发也需要日志

    2024-04-18 10:04:05
  • 教你使用Python连接oracle

    2023-09-11 01:38:54
  • Node.js中Bootstrap-table的两种分页的实现方法

    2024-05-11 10:58:21
  • 从零学python系列之数据处理编程实例(一)

    2021-10-05 12:36:43
  • Python循环语句之break与continue的用法

    2022-04-15 23:13:20
  • Vue登录拦截 登录后继续跳转指定页面的操作

    2024-05-28 15:48:14
  • Go语言map字典用法实例分析

    2024-04-26 17:29:18
  • Python3简单实现串口通信的方法

    2022-03-10 03:39:53
  • 配置SQL Server文件组对应不同的RAID系统

    2009-01-04 14:31:00
  • 带你了解Python妙开根号的三种方式

    2021-10-18 08:27:56
  • SQL Server转换为XQuery及反向转换

    2009-01-20 13:32:00
  • MySQL Create Database 创建数据库

    2011-09-10 16:04:51
  • javascript实现滚动效果的数字时钟实例

    2024-04-29 13:39:50
  • 从零开始做一个pagination分页组件

    2024-04-29 13:25:13
  • python分数表示方式和写法

    2021-07-08 18:09:19
  • ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN

    2024-01-17 21:57:50
  • asp如何实现页面延迟?

    2010-06-03 10:18:00
  • python 监控服务器是否有人远程登录(详细思路+代码)

    2022-05-16 04:08:26
  • asp之家 网络编程 m.aspxhome.com