public static void Main()
var array = new string[] { "key1###value1###MyTitle_reporting_123###value2", "MyTitle_reporting_123###value3" };
var flatList = array.SelectMany(x => x.Split(new string[] { "###" }, StringSplitOptions.None));
var keyValueTuples = flatList
.Zip(flatList.Skip(1), Tuple.Create);
var titles = keyValueTuples
.Where(x => x.Contains("MyTitle") && x.Contains("_reporting_"))
.Select(x => x.Replace("_reporting_", ""));
Console.WriteLine(string.Join(",", titles.ToArray()));