0

从上一篇关于使用 LINQ(夹具列表)形成锦标赛表的帖子开始

添加数字列表时,例如

var fixture = ListMatches(new List<string> { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" });

当我运行代码时,数字 1 总是第二。例如

Round 1
9 v 1

Round 2
10 v 1

Round 3
11 v 1

我正在努力弄清楚如何修改代码,以便每个“回合”中的数字都会从“家庭”和“离开”交替出现。因此,如果 1 是第 2 名,那么在下一轮它将是第 1 名。如果 16 在第 1 轮中是第 1 名,那么它将在第 2 轮中获得第 2 名。

Round 1
9 v 1

Round 2
1 v 10

Round 3
11 v 1
4

1 回答 1

2

这可能是一个愚蠢的建议,但您可以切换偶数轮的游戏顺序。

List<List<Tuple<string, string>>> fixture = 
  ListMatches(new List<string> { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" });

bool switchOrder = false;
foreach (round in fixture)
{
  if (switchOrder)
  {
     foreach (var tuple in round)
     {
         string temp = tuple.Item1;
         tuple.Item1 = tuple.Item2;
         tuple.Item2 = temp;
     }
  }
  switchOrder = !switchOrder
}
于 2012-12-24T19:40:14.707 回答