I am assuming the logic is every three words needs to group from the start to end ie. from the first word (Tomorrow) to until 3 words(till play), then second word(will) to until 3 words(till Arsenal) and so on.
If I am right probably following code will help,
class Program
{
static void Main(string[] args)
{
string data = "Tomorrow will play Arsenal against Chelsea";
string[] arr = data.Split(new char[] { ' ' });
int arrayPosition = 0;
int length = 3;
List<List<string>> result = new List<List<string>>();
while (arrayPosition < arr.Length)
{
List<string> innerList = new List<string>();
for (int i = arrayPosition, innerLoop = 0; innerLoop < length; ++i, ++innerLoop)
{
if (i < arr.Length)
innerList.Add(arr.ElementAt(i));
}
result.Add(innerList);
++arrayPosition;
}
result.ForEach(item =>
{
item.ForEach(innerItem => Console.Write("{0,10}",innerItem));
Console.WriteLine();
});
}
}
Hope it helps :)