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,不妨来这里看看
if您看了这篇博客。对您有所帮助,请不要吝啬您的“推荐”,您的推荐将是我最大的动力。有问题的话可以评论交流。