2014-02-11 119 views
-1

在每種情況下,我將有數百個需要與irfanview合併的.tif文件。這些文件被命名爲使得在連字符之前匹配的字符串表示它們需要合併(文件名的小示例集合可以如下: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(); 

回答

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(); 
+0

原編輯。 – user2576356

+0

這是因爲'filmfile'是單個字符串而不是字符串的集合。你是不是指'filmPath'? –