语言集成查询 (LINQ) 是Visual Studio 2008和.NET Framework3.5版中一项突破性的创新, 它在对象领域和数据领域之间架起了一座桥梁。
传统上, 针对数据的查询都是以简单的字符串表示, 而没有编译时类型检查或IntelliSense支持。此外, 还必须针对以下各种数据源学习不同的查询语言:SQL数据库、XML文档、各种Web服务等。LINQ使查询成为C#和Visual Basic中的一等语言构造。可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询。图1显示了一个用C#语言编写的、不完整的LINQ查询, 该查询针对SQL Server数据库, 并具有完全类型检查和IntelliSense支持。
在Visual Studio中, 可以用Visual Basic或C#为以下各种数据源编写L I N Q查询:SQLServer数据库、XML文档、ADO.NET数据集以及支持I E n u m e r a b l e或泛型IEnumerable< (Of< (T>) >) 接口的任意对象集合。此外, 还计划了对ADO.NET Entity Framework的LINQ支持, 并且第三方为许多W e b服务和其他数据库实现编写了LINQ提供程序。LINQ查询既可在新项目中使用, 也可在现有项目中与非LINQ查询一起使用。唯一的要求是项目应面向.N E T Framework 3.5版[1]。
XML就好比一个数据库, 能够通过纯文本的形式存储数据。所有的系统平台和开发工具基本上都支持XML数据的操作。利用LINQ进行查询的好处就在于, 不管是何种编程语言和后台数据库, 都可以使用LINQ语言进行查询。这种查询语言对于任何编程语言和任何数据库都是通用的一致的。本文将利用.N E T的L I N Q对X M L文档进行查询数据、修改数据、删除数据等操作。具体操作文档内容如图2所示
1 查询XML数据
1.1 普通查询
可以对XML文档中的数据进行普通查询, 就是不设置任何条件, 查询XML文档中的所有数据。然后用GridView控件将XML文档的数据像数据表中的数据一样显示出来。具体代码如下:
首先, 将XML文档的所有数据加载到一个XML元素——对象xelement中, 然后通过LINQ查询语言检索对象xelement中的全部数据, 并把这些数据保存到一个变量query中。从代码中可以看到, LINQ查询语句也和SQL查询语句类似, 有select, from等相关语句, 查询的时候把from语句放在最前面。最后将这个变量q u e r y设定为GridView控件的数据源, 进行绑定, 就可以在GridView中通过二维表格的方式显示X M L文档的所有数据。
1.2 按条件查询
大多数情况下, 人们只需要查询数据表或XML文档这些数据源中的符合查询条件的数据, 而不是所有数据。所以, 需要对数据源中的数据按条件查询。具体代码如下:
首先, 加载XML文档的数据到一个对象xDoc。然后通过LINQ查询语言检索对象xDoc中的数据, 并把这些数据保存的变量query中。从代码中可以看到, LINQ查询语句中除了有select, from语句之外, 还增加了设置查询条件的where语句。这些基本查询思想和SQL语言是一致的。最后可以把查找过程中定位到的那个元素对应的数据取出来, 给其它变量或控件使用。
2 修改和删除XML数据
2.1 修改XML数据
修改数据也是数据源操作中的一种常用操作。通过修改XML数据, 可以对XML文档中的内容进行更新。具体代码如下:
修改数据首先要查找到相应的数据, 这种查找一般是按条件查询。这部分功能和上述的按条件查询功能是一致的。然后, 修改查找过程中定位到的元素对应的数据。修改后的数据集合在内存中, 还没有写到XML文档中。因此, 需要对所作的修改进行保存, 就是把数据重新写回到XML文档中。
2.2 删除XML数据
删除数据也是更新数据源的一种方法。通过删除某个XML元素的数据, 可以实现对XML文档的更新。具体代码如下:
删除户籍首先也要查找到相应的数据, 这种查找也和上述的按条件查询功能是一致的。LINQ查询语句把要删除的元素保存到一个变量q u e r y中。然后, 对变量query进行Remove操作。更新后的数据集合还是在内存中。因此, 需要对所作的更新进行保存, 把数据重新写回到XML文档中。
3 结语
本文所讨论的是LINQ to XML最基本的操作。通过这些方法可以对X M L数据进行简单的查询、修改、删除操作。除此之外, 还有LINQ to SQL、LINQ to DataSet、LINQ to Objects、LINQ to Entities等各种技术, 这些技术的应用可以大大提高编写代码的效率。
摘要:语言集成查询 (LINQ) 是Visual Studio 2008和.NET Framework3.5版中一项突破性的创新, 它在对象领域和数据领域之间架起了一座桥梁。通过LINQ技术, 可以更方便的对各种数据源进行操作, 而不用考虑编程语言, 数据库等影响程序兼容性的问题。本文介绍了一些LINQtoXML的简单操作, 描述了怎样通过LINQ技术来操作XML文档数据。
关键词:LINQ,XML,查询,修改,删除
参考文献
[1] http://msdn.microsoft.com/zh-cn/library/bb397897.aspx.