2012-10-11 36 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,以及如果您需要列出多个不同来源的目录,这可能会很有效。

相关问题