2012-10-11 58 views
-1

目前,我有一個主文件夾,其中有320個子文件夾,我將這些文件夾名稱保存到臨時表中的sql server數據庫中。然後我檢索這些數據,使用它,然後刪除它。System.Collections.Generic

要抗拔文件夾名稱使用:

`List<string> FolderInfoList = Directory.GetDirectories(stringFolderPath).ToList();` 

我臨時tablehas 2列(ID,姓名),它的ID是一個自動增量字段。

然後我保存名稱詳細到這將是導致

enter image description here

之後,我的每一個文件夾名使用id檢索第二個表,我使用,使用它後,我會刪除。

由於我的經理要求我不要使用數據庫,我需要找到一個替代解決方案。我知道有一種方法使用字典功能,但我不知道如何使用它或如何爲單個文件夾名稱分配唯一的ID,或者當我檢索所有文件夾的名稱列表功能時,我將它們檢索爲列表,而不是個別。我需要使用任何替代方法來操作相同的功能。

+1

爲什麼你需要ID檢索文件夾?它存儲在什麼地方? – Bartosz

+2

爲什麼您需要爲文件夾名稱指定個人ID? C#運行庫中的不同對象已具有隱式的不同身份。它們存儲在一個普通的'List '中的索引也可以工作。 (我希望你不要問在這裏如何使用'List'或'Dictionaries',這是一個「閱讀教程」的問題。) – millimoose

+0

'GetDirectories'應該已經返回唯一的文件夾名稱,因爲你不能擁有具有相同名稱的多個文件夾位於同一位置。我不明白爲什麼你需要一個唯一的ID,特別是因爲你似乎沒有訪問多個目錄中的文件夾(或者甚至不知道你的文件夾包含在哪個目錄中)。爲什麼不通過'FolderInfoList'迭代並對該集合中的文件夾名稱執行操作?如果您正在操作文件夾或查看其內容,您可能需要查看「DirectoryInfo」。 –

回答

0

,你可以試試下面的......它就會分配存儲在一個新的類爲每個文件夾一個唯一的GUID您

using System; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 
using System.Diagnostics; 
using System.DirectoryServices; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Management.Automation; 
using System.Management.Automation.Runspaces; 

namespace zielonka.co.uk.stackoverflow.com.samples.unique 
{ 
    class Program 
    { 
     public class info 
     { 
      public string name; 
      public Guid uniqueID; 
     } 
     static void Main(string[] args) 
     { 
      List<string> FolderInfoList = Directory.GetDirectories("c:\\").ToList(); 
      List<info> uniqueFolders = new List<info>(); 
      foreach (var VARIABLE in FolderInfoList) 
      { 
       uniqueFolders.Add(new info(){name = VARIABLE, uniqueID = new Guid()}); 
      } 
      foreach (var uniqueFolder in uniqueFolders) 
      { 
       Console.WriteLine(uniqueFolder.uniqueID+" "+uniqueFolder.name); 
      } 
     } 
    } 
} 
0

您可以對集合使用ToDictionary()方法 - 您只需要爲字典定義「鍵」值。

你可以使用列表中項目的索引嗎?

List<string> folderInfoList = 
    Directory.GetDirectories(stringFolderPath).ToList(); 

Dictionary<int,string> dict = 
    folderInfoList.ToDictionary(i => i , folderInfoList.IndexOf(i)); 

或GUID(知道的GUID會有所不同每次運行時,即使Name是一樣的:

Dictionary<string,string> dict = 
    folderInfoList.ToDictionary(i => i , Guid.NewGuid().ToString()); 
0

如果我沒有理解好,你要找出directroywith一個唯一的ID鍵,但是所有的文件夾都來自同一個父目錄,那麼名稱是唯一的,不需要創建另外一個鍵。更通用的,由框架提供的GUID,以及如果您需要列出多個不同來源的目錄,這可能會很有效。

相關問題