.NET Collection需要存储文件路径和扩展

asm*_*smo 0 c# collections path

我有大量的文件路径和文件扩展名来处理:

  • 每个文件路径只有一个与之关联的文件扩展名.
  • 每个文件扩展名都有一个或多个与之关联的文件路径.
  • 路径是唯一的,扩展不是.

我的目标是轻松检索与给定文件扩展名关联的所有文件路径.

例如,如果我问"mp3",我想知道具有该扩展名的文件的所有路径.

现在,我的问题是:我应该使用哪个C#集合来最佳地执行此操作以及如何使用该集合?

Mar*_*lon 5

我会使用一个Dictionary<string, List<string>>键,其中键将是扩展名(例如,"mp3"),它将返回类型为.mp3的文件路径列表.

如果您可以使用LINQ,您可以使用单个List<string>并检索与特定文件扩展名关联的文件路径,如下所示:

List<string> s = new List<string>();
s.Add("c:\\documents and settings\\sound1.mp3");
s.Add("c:\\documents and settings\\sound2.mp3");
s.Add("c:\\documents and settings\\sound3.mp3");
s.Add("c:\\documents and settings\\something1.wav");
s.Add("c:\\documents and settings\\something2.exe");
s.Add("c:\\documents and settings\\abc.MP3");

var mp3paths = s.Where(x => String.Compare(".mp3", Path.GetExtension(x), true) == 0);
var exepaths = s.Where(x => String.Compare(".exe", Path.GetExtension(x), true) == 0);
Run Code Online (Sandbox Code Playgroud)