-2

目前,我有一个包含 320 个子文件夹的主文件夹,我将这些文件夹名称保存到临时表中的 sql server DB 中。然后我检索该数据,使用它,然后删除它。

要提取我使用的文件夹名称:

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

我的临时表有 2 列(ID、名称),其中 ID 是一个自动增量字段。

然后我将名称详细信息保存到第二个表中

在此处输入图像描述

之后,我使用 id 检索每个文件夹名称,我使用并在使用后将其删除。

由于我的经理要求我不要使用数据库,我需要找到一个替代解决方案。我知道有一种使用 Dictionary 函数的方法,但我不知道如何使用它或如何为单个文件夹名称分配唯一 ID,或者当我检索所有文件夹名称 List 函数时,我将它们作为列表检索,而不是分别。我需要使用任何替代方法来操作相同的功能。

4

3 回答 3

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());
于 2012-10-11T16:04:58.857 回答
0

如果我理解得很好,您想用唯一的 ID 密钥识别目录。但是您所有的文件夹都来自同一个父目录。然后,名称是唯一的。无需创建另一个密钥。

如果你真的想要,你可以使用一个简单的 int 计数器,或者为了更通用的目的,一个由框架提供的 GUID,如果你需要列出来自多个异构源的目录,它可能会很有效。

于 2012-10-11T16:05:24.110 回答
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);
            }
        }
    }
}
于 2012-10-11T16:05:41.800 回答