本文原始作者博客 http://www.cnblogs.com/toutou

Linq 入门篇(一):分分钟带你遨游linq to xml的世界

本文原创来自博客园 请叫我头头哥的博客, 请尊重版权,跳转至原博文预览。

1.Linq简介

2.Linq案例

1.Linq简介:回到顶部

  LINQ,语言集成查询(Language Integrated Query)是一组用于c#Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。在网上有很多对于Linq性能或者其他方面的批判或者表扬云云。 在这里我不想对Linq做任何方面的评价,因为我始终相信物生一利,必生一弊。而且其实很多技术,Linq也好,多线程也罢。我觉得既然这些技术存在都是有它的道理的。主要还是靠自己项目的需求,再确定是否引入这些技术。技术本身都是为了服务项目而生的。

  本博客将通过几个简单而又传统的增删改查的示例来带大家充分感受linq的乐趣。

2.Linq案例回到顶部

创建文件回到顶部

  

  1. // 创建一个文件路径
  2. string path = string.Format(@"F:\{0}.xml", DateTime.Now.ToString("yyyyMMddhhmmss"));
  3. FileInfo fiXML = new FileInfo(path);
  4. // 如果文件不存在
  5. if (!(fiXML.Exists))
  6. {
  7. // 创建xml文档
  8. XDocument xelLog = new XDocument(
  9. new XDeclaration("1.0", "utf-8", "no"),
  10. new XElement("ipmsg",
  11. new XElement("msg_log",
  12. new XElement("user", "猴哥"),
  13. new XElement("logdate", DateTime.Now.ToString("yyyyMMddhhmmss")),
  14. new XElement("message", "猴哥到此一游")
  15. )
  16. )
  17. );
  18. xelLog.Save(path);
  19. }

  运行之后的xml文件应该是这样的:

  

  1. <?xml version="1.0" encoding="utf-8" standalone="no"?>
  2. <ipmsg>
  3. <msg_log>
  4. <user>猴哥</user>
  5. <logdate>20150421024045</logdate>
  6. <message>猴哥到此一游</message>
  7. </msg_log>
  8. </ipmsg>

回到顶部

  1. string path = @"F:\20150421024045.xml";
  2. // 检查文件是否存在
  3. if ((File.Exists(path)))
  4. {
  5. //实例化XMLog
  6. XElement xelem = XElement.Load(path);
  7.  
  8. //执行linq添加(xmlLOG)
  9. XElement newLog = new XElement("msg_log",
  10. new XElement("user", "沙僧"),
  11. new XElement("logdate", DateTime.UtcNow.ToString()),
  12. new XElement("message", "大师兄,师傅被妖怪抓走了")
  13. );
  14. xelem.Add(newLog);
  15. //保存xml
  16. xelem.Save(path);
  17.  
  18. }

  运行之后的xml文件应该是这样的:

  

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ipmsg>
  3. <msg_log>
  4. <user>猴哥</user>
  5. <logdate>20150421024045</logdate>
  6. <message>猴哥到此一游</message>
  7. </msg_log>
  8. <msg_log>
  9. <user>沙僧</user>
  10. <logdate>4/21/2015 6:49:03 AM</logdate>
  11. <message>大师兄,师傅被妖怪抓走了</message>
  12. </msg_log>
  13. </ipmsg>

回到顶部

  1. string path = @"F:\20150421024045.xml";
  2. // 检查文件是否存在
  3. if ((File.Exists(path)))
  4. {
  5. //实例化XMLog
  6. XElement xelem = XElement.Load(path);
  7.  
  8. var queryXML = from xmlLog in xelem.Descendants("msg_log")
  9. where xmlLog.Element("user").Value == "猴哥"
  10. select xmlLog;
  11.  
  12. queryXML.Remove();
  13.  
  14. //保存xml
  15. xelem.Save(path);
  16.  
  17. }

  运行之后的xml文件应该是这样的:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ipmsg>
  3. <msg_log>
  4. <user>沙僧</user>
  5. <logdate>4/21/2015 6:49:03 AM</logdate>
  6. <message>大师兄,师傅被妖怪抓走了</message>
  7. </msg_log>
  8. </ipmsg>

回到顶部

  1. string path = @"F:\20150421024045.xml";
  2. // 检查文件是否存在
  3. if ((File.Exists(path)))
  4. {
  5. //实例化XMLog
  6. XElement xelem = XElement.Load(path);
  7.  
  8. var queryXML = from xmlLog in xelem.Descendants("msg_log")
  9. where xmlLog.Element("user").Value == "沙僧"
  10. select xmlLog;
  11. queryXML.FirstOrDefault().Element("message").Value = "二师兄,大师兄被妖怪抓走了";
  12.  
  13. //保存xml
  14. xelem.Save(path);
  15.  
  16. }

运行之后的xml文件应该是这样的:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ipmsg>
  3. <msg_log>
  4. <user>沙僧</user>
  5. <logdate>4/21/2015 6:49:03 AM</logdate>
  6. <message>二师兄,大师兄被妖怪抓走了</message>
  7. </msg_log>
  8. </ipmsg>

回到顶部

  1. string path = @"F:\20150421024045.xml";
  2. string messageByShaSeng = string.Empty;
  3. // 检查文件是否存在
  4. if ((File.Exists(path)))
  5. {
  6. //实例化XMLog
  7. XElement xelem = XElement.Load(path);
  8. var queryXml= from xmlLog in xelem.Descendants("msg_log")
  9. //所有名字为Bin的记录
  10. where xmlLog.Element("user").Value == "沙僧"
  11.  
  12. select xmlLog;
  13. messageByShaSeng = queryXml.FirstOrDefault().Element("message").Value;
  14. }
  15.  
  16. Console.WriteLine(messageByShaSeng);

运行输入内容是:   二师兄,大师兄被妖怪抓走了

  本文所有内容皆为原创,欢迎欣赏阅读和探讨,转载务必请注明出处,否则追究法律责任(虽然linq已是陈腔滥调,但是也是原创)

  特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。另外如需更深的了解Linq,不妨来这里看看

  本文原始作者博客 http://www.cnblogs.com/toutou

  if您看了这篇博客。对您有所帮助,请不要吝啬您的“推荐”,您的推荐将是我最大的动力。有问题的话可以评论交流。

  

[原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界的更多相关文章

  1. 使用python操作XML增删改查

    使用python操作XML增删改查 什么是XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输 ...

  2. linq的简单增删改查

    Linq高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名,将列名完整映射成字段名数据库数据访问,能大大减少代码量.(反正最后结果就是不用写ado.Net那一套增删改查,有一套封装好 ...

  3. Linq to sql 增删改查(转帖)

    http://blog.csdn.net/pan_junbiao/article/details/7015633   (LINQ To SQL 语法及实例大全) 代码 Code highlightin ...

  4. net对XML增删改查

    Pass:看公司代码,配置下拉框的功能,和下拉框的数字转文字.配置xml里面有下拉的value,name,这样界面直接显示数字,然后转译成中文 1.xml文件格式 <?xml version=& ...

  5. c# XML增删改查

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. .net xml 增删改查基础复习及干货分享

    今天做做项目时,有一个需求需要用到一些固定的文本数据,觉得将这些需要存储的信息直接写在代码里很不友好,放在数据库中存储又觉得不够方便,自然就想到了使用xml来进行操作,我平常在项目中其实用到xml的机 ...

  7. IDEA+Maven 整合SSM框架实现简单的增删改查(新手入门,傻瓜操作)

    原博客地址:https://blog.csdn.net/khxu666/article/details/79851070 选用SSM框架的原因在目前的企业级Java应用中,Spring框架是必须的.S ...

  8. mysql实现简单的增删改查,放入xmapp自带数据库中

    1.mysql概念:SQL-Structured Query Language,是一种特殊的语言,专用于操作关系型数据库服务器中的数据,所有的SQL语句分为四类: (1)DDL(2)DQL(3)DML ...

  9. c#操作xml增删改查

    1.首先新建一个xml文件(Root是我写上的) 2. 3.直接上代码,更直观 (1)初始化xml /// <summary> /// 初始化xml /// </summary> ...

随机推荐

  1. 长见识了,知道了collected和Graphite 这两个东东

    今天下午的讨论会议中,听到了两个名词collected和Graphite这是神马东东,以前在bingo的时候也没听说过,开完会下去查了下.原来他两是监控系统的啊.以前也从来没做过系统监控方面的项目,这 ...

  2. 安装 Visual Studio Web Tools 的奇怪问题

    安装Microsoft ASP.NET 5 RC 1 时提示 0x80070005 - 拒绝访问 日志文件为 [1968:3F64][2015-11-20T10:08:36]i010: Launchi ...

  3. 深入理解Java的接口和抽象类

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  4. 【2016-10-16】【坚持学习】【Day7】【建造者模式】

    建造者模式: 一个复杂的对象由多个分部件组成.一个复杂对象 class Product { private string partA; //定义部件,部件可以是任意类型,包括值类型和引用类型 priv ...

  5. tomcat配置SSL双向认证

    一.SSL简单介绍 SSL(Secure Sockets Layer 安全套接层)就是一种协议(规范),用于保障客户端和服务器端通信的安全,以免通信时传输的信息被窃取或者修改. 怎样保障数据传输安全? ...

  6. 第21章 java线程(1)-线程初步

    java线程(1)-线程初步 1.并行和并发 并行和并发是即相似又有区别: 并行:指两个或者多个事件在同一时刻点发生. 并发:指两个或多个事件在同一时间段内发生 在操作系统中,并发性是指在一段事件内宏 ...

  7. 数据库_MYSQL

     数据库简介 数据库分类:关系型数据库.非关系型数据库 常用的关系型数据库有:orcale .mysql .sql server等等 常用的非关系型数据库有: Memcached.redis.mong ...

  8. 【bzoj1059】 ZJOI2007—矩阵游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1059 (题目链接) 题意 一个01矩阵,可以任意交换两行或两列,问能否经过若干次交换后使主对角线全为 ...

  9. mysql日期格式化

    DATE_FORMA T(date, format) 根据格式串format 格式化日期或日期和时间值date,返回结果串. 可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值 ...

  10. Python 面向对象 中高级

    类成员: #字段 普通字段 属于对象 执行只能通过对象访问 静态字段 属于类 执行 既可以通过对象访问,也可以通过类访问 class Foo: def __init__(self,name): # 字 ...