枚举目录名称子串GroupBy问题

时间:2017-05-18 22:00:33

标签: c#

我正在尝试使用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的部分将被视为选择,但我不知道该如何处理该部分。

1 个答案:

答案 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}");
    }
}

<强>输出

enter image description here