前提・実現したいこと
Treeviewで指定のパス(/opt/test/001/9991/20191210/093011/test.csv)を表示するという機能を作成していたのですが、その処理を記述するにあたって同じようなことを繰り返しているためうまくまとめたいです。
同じことを繰り返していることには気づいたのですが、for文などで記述を短くしようとしてみてもこれをどうすれば短くできるのかがわかりませんでした。
どうすればうまく記述できるでしょうか?
該当のソースコード
C#
1// ノード作成 2List<TreeNode> treeList = new List<TreeNode>(); 3 4foreach (string dir in dirNameList) 5{ 6 TreeNode tn = new TreeNode(dir); 7 8 testService ts = new testService(); 9 List<DirectoryInfo> subDirList = new List<DirectoryInfo>(); 10 subDirList = ts.GetDir(GetFilePath(path, dir)); 11 12 foreach (DirectoryInfo di in subDirList) 13 { 14 TreeNode child = new TreeNode(di.Name); 15 TreeNode tn2 = new TreeNode(child.Text); 16 List<DirectoryInfo> subDirList2 = new List<DirectoryInfo>(); 17 subDirList2 = ts.GetDir(GetFilePath( 18 GetFilePath(path, dir), 19 di.Name)); 20 foreach (DirectoryInfo di2 in subDirList2) 21 { 22 TreeNode child2 = new TreeNode(di2.Name); 23 TreeNode tn3 = new TreeNode(child2.Text); 24 List<DirectoryInfo> subDirList3 = new List<DirectoryInfo>(); 25 subDirList3 = ts.GetDir(GetFilePath( 26 GetFilePath( 27 GetFilePath( 28 path, dir), di.Name), 29 di2.Name)); 30 foreach (DirectoryInfo di3 in subDirList3) 31 { 32 TreeNode child3 = new TreeNode(di3.Name); 33 TreeNode tn4 = new TreeNode(child3.Text); 34 List<DirectoryInfo> subDirList4 = new List<DirectoryInfo>(); 35 subDirList4 = ts.GetDir(GetFilePath( 36 GetFilePath( 37 GetFilePath( 38 GetFilePath( 39 path, dir), di.Name), di2.Name), 40 di3.Name)); 41 foreach (DirectoryInfo di4 in subDirList4) 42 { 43 TreeNode child4 = new TreeNode(di4.Name); 44 TreeNode tn5 = new TreeNode(child3.Text); 45 List<DirectoryInfo> subDirList5 = new List<DirectoryInfo>(); 46 subDirList5 = ts.GetDir(GetFilePath( 47 GetFilePath( 48 GetFilePath( 49 GetFilePath( 50 GetFilePath( 51 path, dir), di.Name), di2.Name), di3.Name), 52 di4.Name)); 53 foreach (DirectoryInfo di5 in subDirList5) 54 { 55 TreeNode child5 = new TreeNode(di5.Name); 56 tn5.Nodes.Add(child5); 57 } 58 tn4.Nodes.Add(tn5); 59 } 60 tn3.Nodes.Add(tn4); 61 } 62 tn2.Nodes.Add(tn3); 63 } 64 tn.Nodes.Add(tn2); 65 } 66 treeList.Add(tn); 67} 68
C#
1// ディレクトリ情報を取得 2public List<DirectoryInfo> GetDir(string path) 3{ 4 List<DirectoryInfo> ret = new List<DirectoryInfo>(); 5 6 // 指定フォルダ以下のサブフォルダをすべて取得する 7 DirectoryInfo di = new System.IO.DirectoryInfo(path); 8 DirectoryInfo[] subFolders = 9 di.GetDirectories("*", System.IO.SearchOption.TopDirectoryOnly); 10 11 ret.AddRange(subFolders); 12 13 return ret; 14}
C#
1// ファイルパス結合 2public static string GetFilePath(string basePath, string addPath) 3{ 4 string ret = ""; 5 string path = "/opt/test/"; 6 return ret = Path.Combine(path, basePath, addPath); 7}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/12 02:16