How do I save and load a 2D array?

So, first off, I know this is a duplicate but none of the answers I found on Google or similar helped me with my problem.

I have a sandbox game where the player places blocks in a 2D space. Every time a block is placed, it saves this to a 2D array called blocks. This is how the array looks:
public static int[,] blocks = new int[999,999];

Let’s say a player places a block at x500/y500: blocks[500,500] will be set to “1” saying that the block with the ID “1” was placed there.

It all works fine, yet, I still have to save the arrays so that my player won’t have to start over every time again! Now, if this would be a 1D array, it would be very easy. This is a 2D array though and I can’t simply save it all to PlayerPrefs, nor PlayerPrefsX.

I tried figuring out a way to convert the 2D array to a 1D array, saving that, and then on load converting it back to 1D.

For example by making two arrays, one called blocksX and one called blocksY, but I would have to access the two dimensions individually (like, only the “X” dimension of blocks[x,y] and only the “Y” dimension of blocks[x,y]).
How would I do it?
And is there a better/easier way?

Many thanks,

I’ve done tutorial on that, with compression: [NO BULLSHIT TUTORIALS] Save and Load A Multidimensional Array in C# Unity - YouTube

Here’s the code:

Use it to generate a string, than save it to a file.