LINQ遍歷全面概述
LINQ有很多值得學(xué)習(xí)的地方,這里我們主要介紹LINQ遍歷,包括介紹用LINQ遍歷一個(gè)指定目錄并輸出為XML等方面。
今天看了一天的LINQ,給自己布置一個(gè)問題:用LINQ遍歷一個(gè)指定目錄并輸出為XML。
寫出的代碼如下:
- public static XElement ToXml(this DirectoryInfo dir)
- {
- XElement root = new XElement("Dir",
- new XAttribute("Name", dir.Name),
- from subDir in dir.GetDirectories()
- select DirToXml(subDir),
- from file in dir.GetFiles()
- select new XElement("File", file.Name));
- return root;
- }
使用的時(shí)候,你可以這樣:
- DirectoryInfo dir = new DirectoryInfo(path);
- XElement dirdirXml = dir.ToXml();
OK,搞定??梢钥闯?,LINQ非常強(qiáng)大,既然這么強(qiáng)大,為什么不更進(jìn)一步呢?我要遍歷一下目錄里的制定格式的文件應(yīng)該怎么做呢?比如說我要找出目錄里的所有的mp3于是可以寫出這樣的代碼
- public static XElement ToXml(this DirectoryInfo dir, string searchPattern)
- {
- XElement root = new XElement("Dir",
- new XAttribute("Name", dir.Name),
- from subDir in dir.GetDirectories()
- select DirToXml(subDir),
- from file in dir.GetFiles(searchPattern)
- select new XElement("File", file.Name));
- return root;
- }
- //使用的時(shí)候是這樣
- DirectoryInfo dir = new DirectoryInfo(path);
- XElement dirdirXml = dir.DirToXml("*.mp3");
輕松搞定,更進(jìn)一步,如果我要找多個(gè)格式的文件呢?比如說要找出目錄里面的圖片文件(jpg, bmp, gif…)Ok,沒問題,可以寫成這樣:
- public static XElement ToXml(this DirectoryInfo dir, string[] searchPatterns)
- {
- XElement root = new XElement("Dir",
- new XAttribute("Name", dir.Name),
- from subDir in dir.GetDirectories()
- select DirToXml(subDir),
- from pattern in searchPattern
- from file in dir.GetFiles(pattern)
- select new XElement("File", file.Name));
- return root;
- }
- 使用的時(shí)候可以這樣:
- DirectoryInfo dir = new DirectoryInfo(path);
- XElement dirdirXml = dir.DirToXml(new[] { "*.mp3", "*.txt" });
以上介紹用LINQ遍歷一個(gè)指定目錄并輸出為XML。
【編輯推薦】