I have an array of players (string[]) and now I need to get an array of pairs representing games (playerN-playerM) to orginize tournament table like at this picture:

The desired end result is to generate a fixture list with all the games the need to be played.
How can I do this with LINQ in efficient way?
UPDATED:
A-B, A-C, A-D is not correct – games should be able to run in parallel.
I need result in the same order as at the picture
The following code can be used to generate a fixture list for a collection of teams to ensure that each time plays all other teams in 1 home and 1 away match.
The code is a bit long winded but it does work by providing you with a list in the order you have specified.
The code can probably be optimised but at the moment this is how it has come from my head.
NOTE: The resulting list will contain both Home and Away fixture, which based on your grid will be what you need to do anyway.