------------LINQ操作XML--------------

EnForGrass 2012-04-21 08:57:44
加精
RT,LINQ操作XML,目的和上篇一样。不解释!!

/// <summary>
/// 1、创建BookStore.xml的XML文件,由函数CreateXmlFile()完成
/// </summary>
/// <param name="xmlpath">XML文件的路径</param>
private static void CreateXmlFile(string xmlpath)
{
XDocument doc = new XDocument( ///创建XDocument类的实例
new XDeclaration("1.0", "utf-8", "yes"),///XML的声明,包括版本,编码,xml文件是否独立
new XElement("Books", ///添加根节点
new XElement("Book", ///添加一个节点
new XAttribute("BookID", "001"),///添加属性BookID
new XElement("BookNo", "0001"), ///添加元素BookNo
new XElement("BookName", "Book 0001"),///添加元素BookName
new XElement("BookPrice", "40"),///添加元素BookPrice
new XElement("BookRemark", "This is a book 0001")///添加元素BookRemark
)
)
);
///保存XML文件到指定地址
doc.Save(xmlpath);
Console.WriteLine(doc);
}
//调用函数CreateXmlFile(string xmlpath)
static void Main(string[] args)
{
///创建一个名为BookStore.xml的xml文件
Program.CreateXmlFile(@"C:\BookStore.xml");
}



/// <summary>
/// 2、添加元素
/// </summary>
/// <param name="xmlpath">XML文件的路径</param>
private static void AddXmlElement(string xmlpath)
{
///导入XML文件
XElement xe = XElement.Load(xmlpath);
///创建一个新节点
XElement book1 = new XElement("Book",
new XAttribute("BookID", "002"),
new XElement("BookNo", "0002"),
new XElement("BookName", "Book 0002"),
new XElement("BookPrice", "50"),
new XElement("BookRemark", "This is a book 0002")
);
///添加节点到XML文件中,并保存
xe.Add(book1);
///创建一个新节点
XElement book2 = new XElement("Book",
new XAttribute("BookID", "003"),
new XElement("BookNo", "0003"),
new XElement("BookName", "Book 0003"),
new XElement("BookPrice", "30"),
new XElement("BookRemark", "This is a book 0003")
);
///添加节点到XML文件中,并保存
xe.Add(book2);
///创建一个新节点
XElement book3 = new XElement("Book",
new XAttribute("BookID", "004"),
new XElement("BookNo", "0004"),
new XElement("BookName", "Book 0004"),
new XElement("BookPrice", "60"),
new XElement("BookRemark", "This is a book 0004")
);
///添加节点到XML文件中
xe.Add(book3);
///保存到XML文件中
xe.Save(xmlpath);

Console.WriteLine(xe);
}
//调用函数AddXmlElement(string xmlpath)
///添加XML元素
Program.AddXmlElement(@"C:\BookStore.xml");



/// <summary>
/// 3、修改XML文件的元素
/// </summary>
/// <param name="xmlpath">XML文件的路径</param>
/// <param name="strElement">指定的修改元素</param>
private static void ModifyXmlElement(string xmlpath, string strElement)
{
XElement xe = XElement.Load(xmlpath);
///查询修改的元素
IEnumerable<XElement> element = from e in xe.Elements("Book")
where e.Attribute("BookID").Value == strElement
select e;
///修改元素
if (element.Count() > 0)
{
XElement firstelement = element.First();
///设置新的属性
firstelement.SetAttributeValue("BookID", "new004");
///替换成新的节点
firstelement.ReplaceNodes(
new XElement("BookNo", "new0004"),
new XElement("BookName", "Book new0004"),
new XElement("BookPrice", "45"),
new XElement("BookRemark", "This is a book new0004")
);
}
xe.Save(xmlpath);
Console.WriteLine(xe);
}
//调用函数ModifyXmlElement(string xmlpath, string strElement)
///修改XML文件的元素
Program.ModifyXmlElement(@"C:\BookStore.xml", "004");



/// <summary>
/// 4、删除XML文件的元素
/// </summary>
/// <param name="xmlpath">XML文件的路径</param>
/// <param name="strElement">指定删除元素</param>
private static void DeleteXmlElement(string xmlpath, string strElement)
{
XElement xe = XElement.Load(xmlpath);
///查询修改的元素
IEnumerable<XElement> element = from e in xe.Elements("Book")
where e.Attribute("BookID").Value == strElement
select e;
///修改元素
if (element.Count() > 0)
{
XElement firstelement = element.First();
///删除此元素的所有节点和属性
firstelement.RemoveAll();
///删除此元素的属性
//firstelement.RemoveAttributes();
///删除此元素的子节点
//firstelement.RemoveNodes();
}
xe.Save(xmlpath);
Console.WriteLine(xe);
}
//调用函数 DeleteXmlElement(string xmlpath, string strElement)
///删除XML元素
Program.DeleteXmlElement(@"C:\BookStore.xml","new004");



/// <summary>
/// 5、将XML文件中的属性更换成元素
/// </summary>
/// <param name="xmlpath">XML文件的路径</param>
/// <param name="strAttribute">指定要更换的属性</param>
private static void ConvertAttributeToElement(string xmlpath, string strAttribute)
{
XElement xe = XElement.Load(xmlpath);
///查询更换的元素
IEnumerable<XElement> element = from e in xe.Elements("Book")
where e.Attribute("BookID").Value == strAttribute
select e;
///更换为元素
if (element.Count() > 0)
{
XElement firstelement = element.First();
//获取第一个属性
XAttribute attr = firstelement.FirstAttribute;
//XAttribute attr = firstelement.Attribute("BookID");
///将属性转换成元素
firstelement.AddFirst(
new XElement(attr.Name, attr.Value)//添加BookID元素
);
///删除属性
firstelement.RemoveAttributes();
}
xe.Save(xmlpath);
Console.WriteLine(xe);
}
//调用函数:ConvertAttributeToElement(string xmlpath, string strAttribute)
///删除XML元素
//Program.DeleteXmlElement(@"C:\BookStore.xml","new004");//注释这一样

///将文件中的属性更换成元素
Program.ConvertAttributeToElement(@"C:\BookStore.xml","new004");


PS:整个操作仍然很简单。一页不够!
...全文
5353 71 打赏 收藏 转发到动态 举报
写回复
用AI写文章
71 条回复
切换为时间正序
请发表友善的回复…
发表回复
白云任去留 2013-07-01
  • 打赏
  • 举报
回复
wsnby517 2013-06-08
  • 打赏
  • 举报
回复
楼主能问个问题不? 1.new XDeclaration("1.0","gb2312","yes")中的第三个参数有什么用? 2.添加元素的AddXmlElement()方法中。并没有指明新的节点保存在哪个节点中? xe.Add(book1);这句是将book1保存到哪个节点的里面?难道默认是根节点的下面? 谢谢。我等你的回答哦~
wsnby517 2013-06-08
  • 打赏
  • 举报
回复
我完全被标题吸引了。正在学习这个。特地来看看,应该有帮助的呢·
喂大的程序员 2013-05-08
  • 打赏
  • 举报
回复
担心消化不良
xiongchumoa 2012-08-29
  • 打赏
  • 举报
回复
收藏了,以后不需要自己写了
7271747 2012-05-02
  • 打赏
  • 举报
回复
兄弟 LINQ TO OBJECT
不是那么用的,你这等于是为LINQ而LINQ。
更重要的是不是用了LMAD表达式就是LINQ。建议你实际的用LINQ做个项目。
rczjp 2012-05-02
  • 打赏
  • 举报
回复
多谢楼主分享!!
chensheng021 2012-05-02
  • 打赏
  • 举报
回复
学习了,留着以后慢慢消化。

每天回帖即可获得10分可用分!假如楼主再给几分就更好了
wquanchao 2012-04-30
  • 打赏
  • 举报
回复
学习了,不错,马上就学到XML了
skyblackspring 2012-04-28
  • 打赏
  • 举报
回复
不错不错
TheProgramer 2012-04-27
  • 打赏
  • 举报
回复
没有什么可用价值
xjdbz88 2012-04-26
  • 打赏
  • 举报
回复
谢谢LZ分享 .....
因茹而生 2012-04-26
  • 打赏
  • 举报
回复
有必要写的这么复杂吗?我们搞软件的就要学会“偷懒”,一个linq操作XML就写得这么复杂,让Java工程师情何以堪啊。
Aries_0219 2012-04-26
  • 打赏
  • 举报
回复
= =谢谢LZ分享。。。
  • 打赏
  • 举报
回复
感谢分享!
leemuleezi 2012-04-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

支持分享
[/Quote]呵呵
TNight 2012-04-26
  • 打赏
  • 举报
回复
个人觉得蛮方便的啊,我现在一般对于xml的操作都是用的linq。。唯一不舒服的是上司总不让用。认为以后维护起来比较麻烦
upc_xiaowei 2012-04-26
  • 打赏
  • 举报
回复
linq怎么发音?我这种初级的大概用不到
EnForGrass 2012-04-26
  • 打赏
  • 举报
回复
[Quote=引用 49 楼 的回复:]

有必要写的这么复杂吗?我们搞软件的就要学会“偷懒”,一个linq操作XML就写得这么复杂,让Java工程师情何以堪啊。
[/Quote]
偶这里主要目的是演示LINQ操作XML,
phommy 2012-04-26
  • 打赏
  • 举报
回复
提到的linq操作一点也不方便!提到的方便的操作都与linq无关!
加载更多回复(35)
清晰完整PDF版本,是我从网上买来的 共 80MB,分为7个分卷 在 CSDN 上只有我整个是清晰完整的 LINQ 高级编程 .NET 2010 SQL LINQ高级编程 6/7 原价:48.00元 作者:克莱因 译者:李宝 出版社: 清华大学出版社 出版日期: 2009年 ISBN:9787302198857 -------------------------------------------------------------------------------- 本书由数据库专家scott Klein编写,讲述了如何有效地使用LINQ来查询XML、SQL数据库、ADO.NET DataSet和其他数据源,并对此技术进行了更深入的探讨,展示LINQ够显著地改进应用程序的性能。 本书首先介绍TLINQ和Visual Studio 2008、LINQ相关的语言特性以及LINQ查询和LINQ标准查询操作符;然后展示了如何在c#和Visual Basic中使用LINQ to XML编程,以及如何使用LINQ to XML处理其他数据模型;接下来依次介绍LINQ to SQL查询、高级查询概念、LINQ to Entities和LINQ to DataSets。所有这些颇具价值的见解为您提供了强有力的新工具,从而使您能够轻松地扩展和访问数据库中的信息。 内容提要 --------------------------------------------------------------------------------   本书结合具体实例详述了LINQ高级编程所涉及的各个方面。共分为 LINQ概述、LINQ to XMLLINQ to SQL及附录四大部分,每一部分的各个章节结构清晰,层次明显。本书并不是对一种新技术的简单介绍,而是力求使读者通过本书的学习能够立即将LINQ应用到自己的项目开发中。 本书的内容深入浅出,循序渐进,不仅适合LINQ初学者,也可以作为数据库开发人员进阶的参考书。 目录 -------------------------------------------------------------------------------- 第Ⅰ部分 LINQ项目简介  第1章 LINQ项目   1.1 LINQ概述   1.2 标准查询操作符   1.3 LINQ to XML概述   1.4 LINQto SQL概述   1.5 本章小结  第2章 Visual Studio 2008简介   2.1 Visual Studi0 2008   2.2 语言相关的LINQ特性   2.3 本章小结  第3章 LINQ查询   3.1 LrNQ查询简介   3.2 查询语法和方法语法的区别   3.3 使用查询语法和方法语法   3.4 本章小结  第4章 LINQ标准查询操作符   4.1 概述   4.2 标准查询操作符   4.3 使用查询操作符   4.4 本章小结 第Ⅱ部分 LINQ to XML  第5章 理解LINQ to XML   5.1 L]NQ t0XML概述   5.2 LrNQ to XML编程基础   5.3 LINQ to XML编程概念   5.4 LINQtoXML与其他XML技术的比较   5.5 本章小结  第6章 LINQ to XML编程  第7章 LINQ to XML和其他LINQ  第8章 LINQ to XML编程高级  第9章 LINQ to XML和Visual Basic.NET 第Ⅲ部分 LINQ to SQL  第10章 LINQ to SQL概述  第11章 LINQ to SQL查询  第12章 高级查询概念  第13章 实体类  第14章 LINQ to DataSet  第15章 LINQ to SQL高级论题 第Ⅳ部分 附录 作者介绍 -------------------------------------------------------------------------------- SCott K Jein,数据库专家、资深顾问,他对SQL Server、.NET和XML都有着浓厚的兴趣。除本书外,他的著作还包括Professional SQL Server 2005 XML和Professiona/WCF Programming(本书已由清华大华出版社引进并出版,中文版书名为《WCF高级编程》)。除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过ScottKlein@SalXml.com与他交流。 文摘 -------------------------------------------------------------------------------- 第Ⅰ部分 LINQ项目简介 第1章 LINQ项目 我经常听说这样的问题,“什么是LINQ?”,“它是用来做什么的?”,“我们为什么需要它?”。第一个问题(以及随后的其他两个问题)的答案是,语言集成查询(LanguageIntegrated Query,LINQ)是一系列标准查询操作符的集合,这些操作符几乎对每一种数据源的导航、过滤和执行操作都提供了底层的基本查询架构。LINQ可查询的数据源包括XML(可使用LINQ to XML,即原来的XLINQ)、关系数据(使用LINQ to SQL,即先前的DLINQ)、AD0.NET DataSets(使用LINQ to DataSet),以及内存中的数据。 理解这项奇妙的新技术的最好方法就是了解一些关于LINQ如何出现以及为什么出现的历史和背景。 虽然人们最早听说LINQ是在2005年秋季,但实际上2003年初微软就启动了LINQ的开发。LINQ的总体目标是使开发人员更容易地处理SQL和XML数据,这主要是因为在关系数据(数据库)及与其通信(即对关系数据进行处理)的编程语言之间没有任何联系,对于XML同样也是如此。 大多数开发人员现在都能理解面向对象(object.oriented,OO)编程及其相关技术和特性,如类、方法、对象等。面向对象编程在过去十多年就已有巨大的发展,但即使在当前,如果要操纵的信息不是使用00方式定义的或本身就不具有00特性,通过O0技术使用和整合这些信息时仍然存在难以逾越的鸿沟。
清晰完整PDF版本,是我从网上买来的 共 80MB,分为7个分卷 在 CSDN 上只有我整个是清晰完整的 LINQ 高级编程 .NET 2010 SQL LINQ高级编程 2/7 原价:48.00元 作者:克莱因 译者:李宝 出版社: 清华大学出版社 出版日期: 2009年 ISBN:9787302198857 -------------------------------------------------------------------------------- 本书由数据库专家scott Klein编写,讲述了如何有效地使用LINQ来查询XML、SQL数据库、ADO.NET DataSet和其他数据源,并对此技术进行了更深入的探讨,展示LINQ够显著地改进应用程序的性能。 本书首先介绍TLINQ和Visual Studio 2008、LINQ相关的语言特性以及LINQ查询和LINQ标准查询操作符;然后展示了如何在c#和Visual Basic中使用LINQ to XML编程,以及如何使用LINQ to XML处理其他数据模型;接下来依次介绍LINQ to SQL查询、高级查询概念、LINQ to Entities和LINQ to DataSets。所有这些颇具价值的见解为您提供了强有力的新工具,从而使您能够轻松地扩展和访问数据库中的信息。 内容提要 --------------------------------------------------------------------------------   本书结合具体实例详述了LINQ高级编程所涉及的各个方面。共分为 LINQ概述、LINQ to XMLLINQ to SQL及附录四大部分,每一部分的各个章节结构清晰,层次明显。本书并不是对一种新技术的简单介绍,而是力求使读者通过本书的学习能够立即将LINQ应用到自己的项目开发中。 本书的内容深入浅出,循序渐进,不仅适合LINQ初学者,也可以作为数据库开发人员进阶的参考书。 目录 -------------------------------------------------------------------------------- 第Ⅰ部分 LINQ项目简介  第1章 LINQ项目   1.1 LINQ概述   1.2 标准查询操作符   1.3 LINQ to XML概述   1.4 LINQto SQL概述   1.5 本章小结  第2章 Visual Studio 2008简介   2.1 Visual Studi0 2008   2.2 语言相关的LINQ特性   2.3 本章小结  第3章 LINQ查询   3.1 LrNQ查询简介   3.2 查询语法和方法语法的区别   3.3 使用查询语法和方法语法   3.4 本章小结  第4章 LINQ标准查询操作符   4.1 概述   4.2 标准查询操作符   4.3 使用查询操作符   4.4 本章小结 第Ⅱ部分 LINQ to XML  第5章 理解LINQ to XML   5.1 L]NQ t0XML概述   5.2 LrNQ to XML编程基础   5.3 LINQ to XML编程概念   5.4 LINQtoXML与其他XML技术的比较   5.5 本章小结  第6章 LINQ to XML编程  第7章 LINQ to XML和其他LINQ  第8章 LINQ to XML编程高级  第9章 LINQ to XML和Visual Basic.NET 第Ⅲ部分 LINQ to SQL  第10章 LINQ to SQL概述  第11章 LINQ to SQL查询  第12章 高级查询概念  第13章 实体类  第14章 LINQ to DataSet  第15章 LINQ to SQL高级论题 第Ⅳ部分 附录 作者介绍 -------------------------------------------------------------------------------- SCott K Jein,数据库专家、资深顾问,他对SQL Server、.NET和XML都有着浓厚的兴趣。除本书外,他的著作还包括Professional SQL Server 2005 XML和Professiona/WCF Programming(本书已由清华大华出版社引进并出版,中文版书名为《WCF高级编程》)。除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过ScottKlein@SalXml.com与他交流。 文摘 -------------------------------------------------------------------------------- 第Ⅰ部分 LINQ项目简介 第1章 LINQ项目 我经常听说这样的问题,“什么是LINQ?”,“它是用来做什么的?”,“我们为什么需要它?”。第一个问题(以及随后的其他两个问题)的答案是,语言集成查询(LanguageIntegrated Query,LINQ)是一系列标准查询操作符的集合,这些操作符几乎对每一种数据源的导航、过滤和执行操作都提供了底层的基本查询架构。LINQ可查询的数据源包括XML(可使用LINQ to XML,即原来的XLINQ)、关系数据(使用LINQ to SQL,即先前的DLINQ)、AD0.NET DataSets(使用LINQ to DataSet),以及内存中的数据。 理解这项奇妙的新技术的最好方法就是了解一些关于LINQ如何出现以及为什么出现的历史和背景。 虽然人们最早听说LINQ是在2005年秋季,但实际上2003年初微软就启动了LINQ的开发。LINQ的总体目标是使开发人员更容易地处理SQL和XML数据,这主要是因为在关系数据(数据库)及与其通信(即对关系数据进行处理)的编程语言之间没有任何联系,对于XML同样也是如此。 大多数开发人员现在都能理解面向对象(object.oriented,OO)编程及其相关技术和特性,如类、方法、对象等。面向对象编程在过去十多年就已有巨大的发展,但即使在当前,如果要操纵的信息不是使用00方式定义的或本身就不具有00特性,通过O0技术使用和整合这些信息时仍然存在难以逾越的鸿沟。
清晰完整PDF版本,是我从网上买来的 共 60MB,分为11个分卷 在 CSDN 上只有我整个是清晰完整的 LINQ 实战 1/11 LINQ 实战 .NET 2010 SQL 出版社:人民邮电出版社 ISBN:9787115208514 原价:65元 作者:(法)马格里,(美)艾歇特,(美)伍利 著,陈黎夫 译 出版日期:2009-8-1 字数:668000 页码:416 内容提要 -------------------------------------------------------------------------------- 作为.NET上连接编程语言和数据库、内存对象、XML等各种类型数据之间的桥梁,LINQ引入了一种处理数据的全新理念,将查询无缝集成至开发语言之上。本书第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法以及LINQ to DataSet。   本书适合于使用C#和VB.NET的软件开发者。 编辑推荐 -------------------------------------------------------------------------------- 微软MVP呕心沥血之作,LINQ圣经,深入全面,引人入胜,丰富实例,兼顾C#和VB.NET语言。   本书作者是LINQ社区中的重要成员,他们在书中展示了这一技术的精髓……快去享受这一盛宴吧。          ——Matt Warren,微软主架构师,LINQ之父   LINQ方面的杰作!深入、全面、客观,令人欲罢不能。强烈推荐!         ——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是什么 2 1.1.1 概览 3 1.1.2 LINQ的功能 3 1.1.3 作为语言扩展的LINQ 4 1.2 为什么需要LINQ 6 1.2.1 常见问题 6 1.2.2 解决理念上的失调 8 1.2.3 LINQ给出解决方案 12 1.3 LINQ的设计目标及起源 13 1.3.1 LINQ项目的设计目标 13 1.3.2 一点历史 14 1.4 LINQ to Objects初步:查询内存中的集合 15 1.4.1 先决条件 15 1.4.2 Hello LINQ to Objects 17 1.5 LINQ to XML初步:查询XML文档 20 1.5.1 为什么需要LINQ to XML 20 1.5.2 Hello LINQ to XML 22 1.6 LINQ to SQL初步:查询关系型数据库 26 1.6.1 LINQ to SQL功能概览 26 1.6.2 Hello LINQ to SQL 26 1.6.3 进一步了解LINQ to SQL 30 1.7 小结 30 第2章 C#和VB语言的增强特性 31 2.1 新语言的增强特性一瞥 31 2.1.1 列出当前正在运行的所有进程 32 2.1.2 将返回结果封装成类 33 2.2 隐式类型局部变量 34 2.2.1 语法 35 2.2.2 使用隐式类型局部变量改进实例程序 35 2.3 对象和集合的初始化器 37 2.3.1 引入对象初始化器的动机 37 2.3.2 集合初始化器 38 2.3.3 用对象初始化器改进实例程序 39 2.4 Lambda表达式 40 2.4.1 委托回顾 40 2.4.2 匿名方法 42 2.4.3 Lambda表达式介绍 42 2.5 扩展方法 47 2.5.1 创建扩展方法的示例 47 2.5.2 更多使用LINQ标准查询操作符的例子 50 2.5.3 将扩展方法引入到实例程序中 51 2.5.4 注意事项 52 2.6 匿名类型 54 2.6.1 使用匿名类型组合数据 55 2.6.2 没有名字的类型也是类型 55 2.6.3 使用匿名类型改进实例程序 56 2.6.4 匿名类型的限制 57 2.7 小结 58 第3章 LINQ构建块 61 3.1 LINQ对.NET的扩展 61 3.1.1 语言扩展回顾 61 3.1.2 构成LINQ基础的核心元素 62 3.2 序列 63 3.2.1 IEnumerableT接口 63 3.2.2 迭代器回顾 64 3.2.3 延迟查询执行 66 3.3 查询操作符 69 3.3.1 查询操作符是什么 69 3.3.2 标准查询操作符 71 3.4 查询表达式 72 3.4.1 查询表达式是什么 72 3.4.2 编写查询表达式 73 3.4.3 标准查询操作符与查询表达式的关系 75 3.4.4 限制 76 3.5 表达式树 78 3.5.1 Lambda表达式回顾 78 3.5.2 表达式树是什么 78 3.5.3 IQueryable,另一种实现延迟查询执行的方法 81 3.6 LINQ的程序集以及命名空间 81 3.7 小结 83 第二部分 查询内存中的对象 第4章 熟悉LINQ to Objects 86 4.1 实例程序简介 86 4.1.1 程序目标 86 4.1.2 程序功能 87 4.1.3 业务逻辑实体 87 4.1.4 数据库架构 87 4.1.5 示例数据 89 4.2 用LINQ操作内存中的集合 90 4.2.1 能够查询什么 90 4.2.2 支持的操作 94 4.3 在ASP.NET和Windows Forms中使用LINQ 95 4.3.1 Web应用程序中的数据绑定 95 4.3.2 Windows Forms应用程序中的数据绑定 100 4.4 常用的标准查询操作符 103 4.4.1 约束操作符Where 104 4.4.2 投影操作符 105 4.4.3 Distinct操作符 107 4.4.4 转换操作符 108 4.4.5 聚合操作符 109 4.5 用不同的方式显示内存中的集合 110 4.5.1 排序 110 4.5.2 嵌套查询 111 4.5.3 分组 113 4.5.4 使用连接 114 4.5.5 分区 117 4.6 小结 121 第5章 超越基本的内存数据查询 122 5.1 常见使用场景 122 5.1.1 查询非泛型集合 123 5.1.2 按照多个条件分组 125 5.1.3 动态查询 127 5.1.4 LINQ to Text Files 135 5.2 设计模式 137 5.2.1 函数式创建模式 138 5.2.2 ForEach模式 140 5.3 性能分析 142 5.3.1 选择恰当的流操作方式 142 5.3.2 当心立即执行 144 5.3.3 LINQ to Objects会降低代码的性能吗 146 5.3.4 使用LINQ to Objects的代价 149 5.3.5 性能和简洁:鱼和熊掌不可兼得吗 151 5.4 小结 152 第三部分 查询关系型数据 第6章 LINQ to SQL入门 156 6.1 走入LINQ to SQL 157 6.1.1 创建对象映射 159 6.1.2 设定DataContext 161 6.2 通过LINQ to SQL读取数据 161 6.3 继续改进查询 165 6.3.1 过滤 165 6.3.2 排序和分组 167 6.3.3 聚集 168 6.3.4 连接 169 6.4 操作有层级关系的对象 171 6.5 数据加载的时机以及为何要关心这些 174 6.5.1 延迟加载 174 6.5.2 立即加载详细信息 175 6.6 更新数据 177 6.7 小结 179 第7章 揭开LINQ to SQL的本质 180 7.1 对象与关系数据的映射 180 7.1.1 通过在类中添加属性 181 7.1.2 使用外部XML文件实现映射 185 7.1.3 使用SqlMetal工具 186 7.1.4 LINQ to SQL设计器 188 7.2 将查询表达式转换为SQL 190 7.2.1 IQueryable接口 190 7.2.2 表达式树 191 7.3 业务实体的生命周期 193 7.3.1 跟踪变化 195 7.3.2 提交变化 196 7.3.3 操作离线数据 198 7.4 小结 200 第8章 LINQ to SQL高级特性 201 8.1 处理并发修改 201 8.1.1 悲观式并发 201 8.1.2 乐观式并发 202 8.1.3 处理并发异常 204 8.1.4 使用事务解决冲突 207 8.2 高级的数据库功能 208 8.2.1 使用SQL语句直接得到结果对象 209 8.2.2 使用存储过程 210 8.2.3 用户自定义函数 217 8.3 改进业务逻辑层 220 8.3.1 预编译的查询 220 8.3.2 使用部分类实现自定义业务逻辑 221 8.3.3 使用部分方法 223 8.3.4 使用对象继承 225 8.4 LINQ to Entities简介 229 8.5 小结 231 第四部分 操作XML 第9章 LINQ to XML入门 234 9.1 什么是XML API 234 9.2 为什么需要另外一种XML编程API 235 9.3 LINQ to XML设计原则 236 9.3.1 核心概念:函数式创建 238 9.3.2 核心概念:上下文无关的XML创建过程 238 9.3.3 核心概念:简化了的名称 239 9.4 LINQ to XML中相关类的继承体系 241 9.5 在LINQ操作XML 243 9.5.1 加载XML 243 9.5.2 解析XML 245 9.5.3 创建XML 246 9.5.4 使用Visual Basic XML字面量创建XML 249 9.5.5 创建XML文档 251 9.5.6 向XML中添加内容 254 9.5.7 从XML中移除内容 255 9.5.8 更新XML的内容 256 9.5.9 操作属性 258 9.5.10 保存XML 258 9.6 小结 259 第10章 使用LINQ to XML查询并转换XML 260 10.1 LINQ to XML轴方法 261 10.1.1 Element 262 10.1.2 Attribute 263 10.1.3 Elements 264 10.1.4 Descendants 264 10.1.5 Ancestors 267 10.1.6 ElementsAfterSelf、NodesAfterSelf、ElementsBeforeSelf和NodesBeforeSelf方法 268 10.1.7 Visual Basic的XML轴属性 269 10.2 标准查询操作符 271 10.2.1 使用Select进行投影 273 10.2.2 使用Where实现过滤 274 10.2.3 排序和分组 275 10.3 使用XPath查询LINQ to XML对象 278 10.4 转换XML 279 10.4.1 LINQ to XML转换 279 10.4.2 使用XSLT转换LINQ to XML对象 282 10.5 小结 284 第11章 LINQ to XML常见场景 285 11.1 根据XML构建对象 285 11.1.1 目标 286 11.1.2 实现 287 11.2 根据对象创建XML 290 11.2.1 目标 290 11.2.2 实现 291 11.3 根据数据库中的数据创建XML 295 11.3.1 目标 296 11.3.2 实现 297 11.4 过滤并混合从数据库以及XML中得到的数据 301 11.4.1 目标 302 11.4.2 实现 302 11.5 读取XML并更新数据库 306 11.5.1 目标 306 11.5.2 实现 307 11.6 将文本文件转换为XML 319 11.6.1 目标 319 11.6.2 实现 320 11.7 小结 322 第五部分 LINQ无处不在 第12章 扩展LINQ 324 12.1 探寻LINQ的扩展机制 324 12.1.1 LINQ各个特性是如何实现的 325 12.1.2 自定义LINQ扩展能够实现什么 326 12.2 创建自定义查询操作符 327 12.2.1 改进标准查询操作符 327 12.2.2 辅助或领域相关的查询操作符 330 12.3 基本查询操作符的自定义实现 334 12.3.1 回顾查询翻译机制 334 12.3.2 查询表达式模式的规范 335 12.3.3 示例1:跟踪标准查询操作符的执行过程 337 12.3.4 限制:查询表达式冲突 338 12.3.5 示例2:非泛型的、领域相关的操作符 340 12.3.6 示例3:非序列的查询操作符 342 12.4 查询Web服务:LINQ to Amazon 343 12.4.1 LINQ to Amazon介绍 344 12.4.2 需求 345 12.4.3 实现 346 12.5 IQueryable和IQueryProvider:LINQ to Amazon高级版本 352 12.5.1 IQueryable和IQueryProvider接口 353 12.5.2 实现 356 12.5.3 究竟发生了什么 357 12.6 小结 358 第13章 应用程序各层中的LINQ 359 13.1 LinqBooks应用程序概览 359 13.1.1 功能 359 13.1.2 程序UI概览 360 13.1.3 数据模型 362 13.2 LINQ to SQL及数据访问层 362 13.2.1 回顾传统的三层架构 362 13.2.2 用专门的数据访问层还是LINQ to SQL 364 13.2.3 LinqBooks中对LINQ to SQL的使用 368 13.3 LINQ to XML的使用 374 13.3.1 从Amazon中导入数据 374 13.3.2 生成RSS 376 13.4 LINQ to DataSet的使用 377 13.5 使用LINQ to Objects 380 13.6 可扩展性 380 13.6.1 自定义查询操作符 380 13.6.2 创建并使用自定义LINQ提供器 381 13.7 展望未来 381 13.7.1 自定义LINQ功能 382 13.7.2 LINQ to XSD:强类型的LINQ to XML 382 13.7.3 PLINQ:支持并行计算的LINQ 383 13.7.4 LINQ to Entities,ADO.NET Entity Framework的LINQ接口 383 13.8 小结 384 第14章 使用LINQ操作DataSet 385 14.1 LINQ to DataSet概览 385 14.2 DataSet回顾 386 14.2.1 DataSet使用场景及功能 386 14.2.2 DataSet是什么 387 14.2.3 Visual Studio 2008和.NET 3.5为支持LINQ to DataSet进行的改进 389 14.3 查询弱类型DataSet 390 14.3.1 为DataSet加载数据 390 14.3.2 不使用LINQ查询DataSet 394 14.3.3 使用LINQ to DataSet查询弱类型DataSet 395 14.4 查询强类型DataSet 399 14.4.1 生成强类型的DataSet 400 14.4.2 为强类型DataSet加载数据 402 14.4.3 使用LINQ to DataSet查询强类型DataSet 404 14.5 将LINQ to DataSet查询结果绑定至UI控件 406 14.5.1 使用CopyToDataTable将LINQto DataSet查询结果复制到DataTable 406 14.5.2 使用AsDataView实现双向数据绑定 408 14.6 在LINQ to DataSet中使用查询操作符 410 14.6.1 用于DataRow的FieldT和SetFieldT操作符 410 14.6.2 集合操作符以及用DataRowComparer比较DataRow 411 14.7 小结 412 附录 标准查询操作符 414 作者介绍 -------------------------------------------------------------------------------- 马格里(Fabrice Marguerie),微软C# MVP,资深.NET软件架构师,LINQ社区专家。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧