using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] a)
{
var groups = new [] {
"010000100001",
"010000100001",
"010000100001",
"010000100002",
"010000100002",
"010000100002",
"010000200003",
"010000200003",
"020000300004",
"020000300005" }
.GroupBy(s => new {
Subject = s.Substring(0,2),
Chapter = s.Substring(2,6),
Book = s.Substring(8) });
foreach (var g in groups)
{
Console.WriteLine("Subject {0}, Chapter {1}, Book {2}",
g.Key.Subject, g.Key.Chapter, g.Key.Book);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgUHJvZ3JhbQp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhKQoJewoJCXZhciBncm91cHMgPSBuZXcgW10geyAKCQkJIjAxMDAwMDEwMDAwMSIsCgkJCSIwMTAwMDAxMDAwMDEiLAoJCQkiMDEwMDAwMTAwMDAxIiwKCQkJIjAxMDAwMDEwMDAwMiIsCgkJCSIwMTAwMDAxMDAwMDIiLAoJCQkiMDEwMDAwMTAwMDAyIiwKCQkJIjAxMDAwMDIwMDAwMyIsCgkJCSIwMTAwMDAyMDAwMDMiLAoJCQkiMDIwMDAwMzAwMDA0IiwKCQkJIjAyMDAwMDMwMDAwNSIgfQoJCS5Hcm91cEJ5KHMgPT4gbmV3IHsKCQkJCVN1YmplY3QgPSBzLlN1YnN0cmluZygwLDIpLAoJCQkJQ2hhcHRlciA9IHMuU3Vic3RyaW5nKDIsNiksCgkJCQlCb29rICAgID0gcy5TdWJzdHJpbmcoOCkgfSk7CgoJCWZvcmVhY2ggKHZhciBnIGluIGdyb3VwcykKCQl7CgkJCUNvbnNvbGUuV3JpdGVMaW5lKCJTdWJqZWN0IHswfSwgQ2hhcHRlciB7MX0sIEJvb2sgezJ9IiwKCQkJCQlnLktleS5TdWJqZWN0LCBnLktleS5DaGFwdGVyLCBnLktleS5Cb29rKTsKCQl9Cgl9Cn0KCg==
Subject 01, Chapter 000010, Book 0001
Subject 01, Chapter 000010, Book 0002
Subject 01, Chapter 000020, Book 0003
Subject 02, Chapter 000030, Book 0004
Subject 02, Chapter 000030, Book 0005