如何使用键和数组和列表创建字典?
问题描述:
我有这两个集合:如何使用键和数组和列表创建字典?
List<string> files =
Directory.GetFiles(FilePath).ToList().Select(file => new FileInfo(file).Name).ToList();
string[] dirs = Directory.GetDirectories(FilePath);
不过,我想这两个添加到一个空的字典,所以我有一个大字典,路径和文件。我不确定的事情,我如何/在哪里指定密钥?
对于文件,我希望文件名作为关键字,而对于目录,我希望最后一个目录(例如,在/ 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);
除非我不理解你?你问如何添加它们?或者如何正确地将文件与目录配对?
答
到目前为止,我喜欢巴拉 - [R的LINQ回答最好(和他有我给予好评),但它的值得一提的是,在一般情况下,当您想要将List<string>
和string[]
合并为Dictionary<string, string>
时,您可以随时使用基本的for
循环:
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>
集合。
你已经告诉我们你想要的钥匙是什么,但那些值呢? – Gabe 2011-05-04 22:51:49