我有两个集合:
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
循环:
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>
系列。