-2

現時点では、320 のサブ フォルダーを持つメイン フォルダーがあり、それらのフォルダー名を一時テーブルの SQL Server DB に保存しています。次に、そのデータを取得し、消費してから削除します。

私が使用するフォルダ名を引き出すには:

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

私の一時テーブルには 2 つの列 (ID、名前) があり、そのうち ID は自動インクリメント フィールドです。

次に、名前の詳細を2番目のテーブルに保存します。

ここに画像の説明を入力

その後、IDを使用してすべてのフォルダー名を取得し、使用してから削除します。

マネージャーがデータベースを使用しないように要求したため、別の解決策を見つける必要があります。辞書機能を使用する方法があることは知っていますが、その使用方法や個々のフォルダー名に一意の ID を割り当てる方法がわからない、またはすべてのフォルダー名リスト機能を取得するときに、それらをリストとして取得するのではなく、リストとして取得します個別に。別の方法を使用して同じ関数を操作する必要があります。

4

3 に答える 3

0

コレクションでメソッドを使用できますToDictionary()。ディクショナリの「キー」値を定義するだけです。

リスト内のアイテムのインデックスを使用できますか?

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

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

Nameまたは GUID (GUID が同じであっても、実行するたびに異なることを知っています。

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 に答える