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您看了這篇博客。對您有所幫助,請不要吝啬您的“推薦”,您的推薦將是我最大的動力。有問題的話可以評論交流。