Если в списке всего 30 человек или около того, вы можете просто прочитать весь текстовый файл в память, разделенную на разрывы строк, рандомизировать его, а затем просмотреть список и создать группы.
Итак, как-то так:
public List<String[]> CreateTeams(String filePath, int membersPerTeam)
{
String[] allUsers = File.ReadAllLines(filePath);
List<String> randomUsers = allUsers.OrderBy(s => new Guid()).ToList();
int teamCount = allUsers.Length / membersPerTeam;
var teams = new List<String[]>();
for (int i = 0; i < teamCount; i++)
{
String[] team = new String[membersPerTeam];
for (int j = 0; j < usersPerTeam; j++)
{
team[j] = randomUsers[i * membersPerTeam + j];
}
teams.Add(team);
}
return teams;
}
Хотя, очевидно, вам потребуется дополнительная проверка ошибок и т. Д., И этот вложенный цикл выглядит некрасиво, но вы поняли идею. И, конечно, это не сработает, если общее количество пользователей не делится поровну на членов команды. Тем не менее, это должно помочь вам.