我有这两个系列:
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很好。
由于
答案 0 :(得分:8)
对于文件,您可以
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);
答案 1 :(得分:0)
如果您已经拥有所需的信息,并且知道如何正确配对。您只需使用此语句将其添加到字典中。
Dictionary<string, string> myDict = new Dictionary<string, string>();
myDict.Add(file, directory);
除非我不理解你?你在问如何添加它们吗?或者如何正确地将文件与目录配对?
答案 2 :(得分:0)
到目前为止,我最喜欢 Bala R 的LINQ答案(并且他有我的upvote),但值得一提的是,在一般情况下,当你想要组合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>
集合。