天天躁日日躁狠狠躁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遍歷目錄(原創),轉載需保留來源!

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

主站蜘蛛池模板: 全部老头和老太XXXXX | 99re久久热在线播放8 | 久久综合久久鬼色 | 久久久久国产精品美女毛片 | 精品一区二区三区免费毛片 | 日韩欧美中文字幕一区 | 欧美精品一区二区蜜臀亚洲 | 免费三级黄色 | 无限资源在线完整高清观看1 | 人人澡人人爽人人精品 | 哺乳期妇女挤奶水36d | 第九色区av天堂 | 拍床戏被肉高H纯肉H在水 | 善良的女房东味道2在线观看 | 灌满内射HP1V1 | 欧美做真爱欧免费看 | 好满射太多了装不下了视频 | 京香在线观看 | 国产免费久久爱久久啪 | 久久久久久久99精品免费观看 | 亚洲精品黄色 | 精品一卡2卡三卡4卡乱码精品视频 | 91国偷自产一区二区三区 | 亚洲国产综合久久久无码色伦 | 欧美乱妇日本无乱码特黄大片 | seyeye免费高清观看 | 色老头色老太aaabbb | 日韩一区二区三区精品 | 亚洲中文字幕在线精品 | 国产精品成人A蜜柚在线观看 | 人人舔人人爱 | 人妻满熟妇AV无码区国产 | 久草高清在线 | 在线视频免费国产成人 | 6080yy奇领电影在线看 | 动漫成人片 | 99久久久久国产精品免费 | 国产精品99久久久久久AV下载 | 性欧美sexovideotv | 妺妺窝人体色WWW偷窥女厕 | 免费99精品国产自在现线 |