using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
var mainList = new List<string>
{"Reset", "Set", "Test", "Test", "Reset", "Test", "Test"};
var i = 1;
var result = mainList
.Select(str =>
{
if (str == "Reset") i++;
return new {str, i};
})
// ^^ Above I make partitions by `i`; that `i` will change by watching a `Reset`
.GroupBy(g => g.i)
.Select(g => g.Select(c => c.str).ToList());
// then I just group by `i` as partition then removing it from results.
foreach (var item in result)
{
foreach (var str in item)
{
Console.Write($"{str}, ");
}
Console.WriteLine();
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIG1haW5MaXN0ID0gbmV3IExpc3Q8c3RyaW5nPgogICAgICAgICAgICB7IlJlc2V0IiwgIlNldCIsICJUZXN0IiwgIlRlc3QiLCAiUmVzZXQiLCAiVGVzdCIsICJUZXN0In07CiAgICAgICAgdmFyIGkgPSAxOwogICAgICAgIHZhciByZXN1bHQgPSBtYWluTGlzdAogICAgICAgICAgICAuU2VsZWN0KHN0ciA9PgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoc3RyID09ICJSZXNldCIpIGkrKzsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcge3N0ciwgaX07CiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIC8vICBeXiBBYm92ZSBJIG1ha2UgcGFydGl0aW9ucyBieSBgaWA7IHRoYXQgYGlgIHdpbGwgY2hhbmdlIGJ5IHdhdGNoaW5nIGEgYFJlc2V0YAogICAgICAgICAgICAuR3JvdXBCeShnID0+IGcuaSkKICAgICAgICAgICAgLlNlbGVjdChnID0+IGcuU2VsZWN0KGMgPT4gYy5zdHIpLlRvTGlzdCgpKTsKICAgICAgICAJLy8gdGhlbiBJIGp1c3QgZ3JvdXAgYnkgYGlgIGFzIHBhcnRpdGlvbiB0aGVuIHJlbW92aW5nIGl0IGZyb20gcmVzdWx0cy4KCiAgICAgICAgZm9yZWFjaCAodmFyIGl0ZW0gaW4gcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgICAgZm9yZWFjaCAodmFyIHN0ciBpbiBpdGVtKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlKCQie3N0cn0sICIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCk7CiAgICAgICAgfQoJfQp9