using System.Collections.Generic;
using Combinatorics.Collections;
var teams = new List<string> { "WCC4", "WCC5", "WCC6", "BARROG3", "BARROG4", "BARROG5", "FB3", "NDG2" };
var rounds = new List<List<Tuple<string, string>>> { new List<Tuple<string, string>>(), new List<Tuple<string, string>>(), new List<Tuple<string, string>>() };
var combinations = new Combinations<string>(teams, 2);
var games = combinations.Where(game => !game[0].Substring(0, game[0].IndexOfAny("0123456789".ToCharArray())).Equals(game[1].Substring(0, game[1].IndexOfAny("0123456789".ToCharArray())))).ToList();
foreach (var round in rounds)
foreach (var game in games.ToList())
if (!round.Any(r => r.Item1.Equals(game[0]) || r.Item1.Equals(game[1]) || r.Item2.Equals(game[0]) || r.Item2.Equals(game[1])))
round.Add(new Tuple<string, string>(game[0], game[1]));
for (var i = 0; i < rounds.Count; i++)
Console.WriteLine($"Round {i + 1}:");
foreach (var game in rounds[i])
Console.WriteLine($"Game: {game.Item1} vs {game.Item2}");