我正在尝试使用GroupBy
函数从一组枚举目录中进行查找。我有部分解决方案,但似乎无法弄清楚其余部分。
目录采用的格式是子字符串(3,6)的字母用作主要类别,而子字符串(0,2)将用作子类别。
IList<string> sliceSteppingList = mainFolder
.EnumerateDirectories("?x??0?0*", SearchOption.TopDirectoryOnly)
.Select(x => x.Name)
.ToList();
这产生了解决方案的一部分,其中输出是一个排序列表并使用我想要的类别,但它在组下面有整个文件夹名称,这不是我想要的。
文件夹名称采用以下格式:
1x6A0A0
1x6C0C0
3x8A0A0
3x8B0B0
3x8C0C0
5x8A0A0
1x6A0A0SS0
1x6A0A0SS1
1x6A0A0SS2
我想要一个包含字典或查找类似
的查找 -A0
+1x6
+5x8
-B0
+3x8
-C0
+1x6
+3x8
选择主要和子类别后,SSx
的部分将被视为选择,但我不知道该如何处理该部分。
答案 0 :(得分:0)
根据我对您的问题和示例输出的理解,您正在寻找这样的GroupBy
:
var sliceSteppingList = mainFolder
.EnumerateDirectories("?x??0?0*", SearchOption.TopDirectoryOnly)
.Select(dirInfo => dirInfo.Name)
.GroupBy(dirName => dirName.Substring(3, 4), dirName => dirName.Substring(0, 3))
.OrderBy(group => group.Key);
以下是显示输出的方法示例:
foreach (var item in sliceSteppingList)
{
Console.WriteLine($"-{item.Key}");
foreach (var subDir in item)
{
Console.WriteLine($" +{subDir}");
}
}
<强>输出强>