类似的文件名到数组或列表中

时间:2014-02-11 20:16:24

标签: c# linq

在每个场景中,我将有数百个.tif文件需要与irfanview合并。这些文件的命名是为了在连字符之前匹配字符串表示它们需要合并(一小组文件名示例如下:0001-1.tif,0001-2.tif,0001-3.tif,0002 -1.tif,0002-2.tif,0003.tif,0004-1.tif,0004-2.tif)。有没有办法通过字符比较将具有相同“前缀”的文件放入自己的数组中,或者修改文件名更容易?我想把所有的“0001”变成一个数组,然后是所有的“0002”等等。有人能以最简单的方式提出建议吗?

看起来它会完美运行,但VS无法识别Substring。是因为我试图将一组文件插入“GroupBy”吗?这是我到目前为止所做的:

  int i = 0;

        string filmtext = textBox1.Text;
        string[] filmPath = Directory.GetFiles(filmtext);
        string filmfile = Path.GetFileName(filmPath[i].ToString());

        filmfile.GroupBy(s => s.Substring(0,4))
                .Select(g => g.ToList())
                .ToList();

1 个答案:

答案 0 :(得分:3)

你可以按前四个字符分组:

filenames.GroupBy(s => s.Substring(0,4))

将返回表示该组中文件名的组的集合,Key值是您分组的4个字符。

要创建可以执行的分组列表:

List<List<string>> groups =
    filenames.GroupBy(s => s.Substring(0,4))
             .Select(g => g.ToList())
             .ToList();