天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

用LINQ遍歷目錄(原創)

今天看了一天的LINQ,給自己布置一個問題:用LINQ遍歷一個指定目錄并輸出為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;

}

 

使用的時候,你可以這樣:

DirectoryInfo dir = new DirectoryInfo(path);

XElement dirXml = dir.ToXml();

OK,搞定。

可以看出,LINQ非常強大,既然這么強大,為什么不更進一步呢?

我要遍歷一下目錄里的制定格式的文件應該怎么做呢?

比如說我要找出目錄里的所有的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;

}

使用的時候是這樣

DirectoryInfo dir = new DirectoryInfo(path);

XElement dirXml = dir.DirToXml("*.mp3");

輕松搞定

更進一步,如果我要找多個格式的文件呢?比如說要找出目錄里面的圖片文件(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 searchPatterns

from file in dir.GetFiles(pattern)

select new XElement("File", file.Name));

return root;

}

使用的時候可以這樣:

DirectoryInfo dir = new DirectoryInfo(path);

XElement dirXml = dir.DirToXml(new[] { "*.mp3", "*.txt" });

Ok,又搞定了。

為什么我要寫三個函數呢?我把三個合并成一個可以嗎?試試看吧

于是,代碼就成了這樣:

public static XElement ToXml(this DirectoryInfo dir, params string[] searchPatterns)

{

XElement root = new XElement("Dir",

new XAttribute("Name", dir.Name),

from subDir in dir.GetDirectories()

select DirToXml(subDir),

searchPatterns.Length > 0 ?

(from pattern in searchPatterns.Distinct() 

from file in dir.GetFiles(pattern)

select new XElement("File", file.Name))

:

    (from file in dir.GetFiles()

select new XElement("File", file.Name)));

return root;

}

測試一下,perfect!

美中不足的是,在代碼中的一個(searchPatterns.Length > 0 ?)就像一個刀疤,有誰有什么好些的主意嗎?

it知識庫用LINQ遍歷目錄(原創),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 啪啪羞羞GIF男女0OXX动态图 | 亚洲精品色情婷婷在线播放 | 日本高清免费一本视频在线观看 | 一区二区三区内射美女毛片 | 久久只精品99品免费久 | 成人精品视频99在线观看免费 | 桃花论坛POWERED2019 | 日日a.v拍夜夜添久久免费 | 久久这里只精品热在线18 | 依恋影院在线观看 | 少妇邻居内射在线 | 成人亚洲视频在线观看 | 久久视频在线视频观看天天看视频 | YELLOW日本免费观看播放 | 国产在线精品一区二区网站免费 | 精品免费视在线视频观看 | 国产呦精品一区二区三区网站 | 最近的中文字幕2019国语 | 热久久伊大人香蕉网老师 | 入禽太深免费视频10 | 在线亚洲国产日韩欧洲专区 | 免费伦理片网站 | 777EY_卡通动漫_1页 | 国产人A片在线乱码视频 | 国产人人为我我为人人澡 | 中国老妇xxxhd | 最近的2019中文字幕国语 | 特级毛片AAAAAA | 俄罗斯黄色大片 | 亚洲国产在线播放在线 | 丝袜诱惑qvod| 伊人影院综合在线 | 免费人成在线观看视频不卡 | 久久99r66热这里有精品 | 久久精品无码成人国产毛 | 91嫩草国产在线观看免费 | 国产激情视频在线播放 | 久久精品视频在线看99 | 久久精品国产亚洲AV天美18 | 亚洲精品一二三区区别在哪 | 久久精品熟一区二区三区 |