簡體   English   中英

如何從數組和列表中制作帶有鍵的字典?

[英]How can I make a dictionary, with keys, from an array and list?

我有這兩個 collections:

      List<string> files =
            Directory.GetFiles(FilePath).ToList().Select(file => new FileInfo(file).Name).ToList();

        string[] dirs = Directory.GetDirectories(FilePath);

但是,我想將這兩個都添加到一個空字典中,所以我有一個包含路徑和文件的大字典。 我不確定的事情,我如何/在哪里指定密鑰?

對於文件,我希望文件名作為鍵,對於目錄,我希望最后一個目錄(例如 a/b/c 中的 c)作為鍵。 我知道如何使用 FileInfo/DirectoryInfo 類獲取此信息,但不確定如何將其包含在從上述創建字典中?

我正在使用 .NET V3.5 和 LINQ 很好。

謝謝

對於文件,你可以做

var  filesDictonary = Directory.GetFiles(FilePath)
                                      .Select(file => new FileInfo(file))
                                      .ToDictionary(f => f.Name, f => f);

對於目錄,

var directoriesDictonary = Directory.GetDirectories(FilePath)
                                     .Select(d  => new DirectoryInfo(d))
                                     .ToDictionary(d => d.Name, d => d);

如果您已經擁有所需的信息,並且知道如何正確配對。 您只需使用此語句將其添加到字典中。

Dictionary<string, string> myDict = new Dictionary<string, string>();
myDict.Add(file, directory);

除非我不理解你? 你問如何添加它們? 或者如何正確地將文件與目錄配對?

到目前為止,我最喜歡Bala R的 LINQ 答案(他得到了我的支持),但值得一提的是,在一般情況下,當你想將List<string>string[]組合成Dictionary<string, string> ,您始終可以使用基本for循環 go :

var MyDictionary = new Dictionary<string, string>();

for (int i = 0; i < Math.Min(MyList.Count, MyArray.Length); i++)
{
    MyDictionary.Add(MyList[i], MyArray[i]);
}

這可能有點無聊,但它適用於任何一對IEnumerable<T> collections。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM