按拆分结果对列表进行分组
Grouping a list by the results of a split
所以我在列表中有一些字符串
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
}
}
但我不确定如何按此拆分对文件进行分组?
我只会将 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()));
}
所以我的解决方案是:
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();
}
}
所以我在列表中有一些字符串
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
}
}
但我不确定如何按此拆分对文件进行分组?
我只会将 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()));
}
所以我的解决方案是:
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();
}
}