2015-03-19 73 views
0

,所以我有一些字符串列表中的分组由分裂的结果列表

Folder1\File.png 
Folder1\File2.png 
File3.png 
File4.png 

,我想在一个split('\\')[0];例如组这些

foreach (var group in files.GroupBy(x => //mysplit)) 
{ 
    if (group.Count() > 1) 
    { 
     // this is a folder and its files are: group 
    } 
    else 
    { 
     //group is an individual file 
    } 
} 

,但我不知道如何通过这个拆分对文件进行分组?

+0

如果这些都有效的路径,您可能需要使用.NET内置检查。 http://stackoverflow.com/questions/439447/net-how-to-check-if-path-is-a-file-and-not-a-directory – Neolisk 2015-03-19 11:22:33

+0

他们Azure路径,我建立我自己的Azure浏览器 – user1 2015-03-19 11:24:41

回答

0

所以我的解决办法是:

foreach (var groupedFiles in files.GroupBy(s => s.Split('\\')[0])) 
{ 
    if (Path.GetExtension(groupedFiles.Key) == string.Empty) 
    { 
      //this is a folder 
      var folder = groupedFiles.Key; 
      var folderFiles = groupedFiles.ToList(); 
    } 
    else 
    { 
      //this is a file 
      var file = groupedFiles.First(); 
    } 
} 
0

我愿意Contains()反斜杠只是项目组:

var lst1 = new string[] {"Folder1\\File.png", "Folder1\\File2.png" , "File3.png", "File4.png" }; 
var grps = lst1.GroupBy(x => x.Contains(@"\")); 
foreach (var g in grps) 
{ 
    if (g.Key) // we have a path with directory 
     Console.WriteLine(String.Join("\r\n", g.ToList())); 
    else // we have an individual file 
     Console.WriteLine(String.Join("\r\n", g.ToList())); 
}