Copy LINQ Join Query Results To A DataTable in VB.NET

I have been trying (with considerable agitation) to plug the results of my LINQ query into a datatable. I have meticulously inspected the interwebs like a wino inspects the sidewalk for change. I have followed a sickening number of links that have yet to
provide me with a simple answer to my problem. I HAVE found quote a few smug and condescending people who seem to enjoy insulting their fellow programmers. But the MSDN side is as disgustingly vague and unhelpful as the rest of the internet. I find it outright
bewildering that an answer to what seems a simple question should be so difficult to find.

The Original Data:

LinqMasterTable 
-----------------------------------------------
ApplesKey | Cost Of Apples | Color Of Apples
-----------------------------------------------
  1 |  $1  |  Red
  2 |  $2  |  Green
  3 |  $3  |  Yellow

LinqSecondTable 
-----------------------------------------------
OrangesKey | Cost Of Oranges | Color Of Oranges
-----------------------------------------------
  1  |  $20  |  Orange
  2  |  $21  |  Orange
  3  |  $22  |  Orange

 

Nothing complex.

The Query:

Dim Matches = _
From mRows In LinqMasterTable _
Join sRows In LinqSecondTable _
On mRows(ThePrimaryKey) Equals sRows(TheForignKey) _
Select mRows, sRows

 

Simple Enough, right?

Mouse Over “Matches” and you get Array Data a little something like this:

+ Matches --+ Results ----+ 0 {mRows = {DataRow}, sRows = {DataRow}} ----+ 1 {mRows = {DataRow}, sRows = {DataRow}} ----+ 2 {mRows = {DataRow}, sRows = {DataRow}} ------+ mRows --------+ ItemArray {Length=3} ----------+ (0) 3.0{Double} ----------+ (1) 3D{Decimal} ----------+ (2) "Yellow"{String} ------+ sRows --------+ ItemArray {Length=3} ----------+ (0) 3.0{Double} ----------+ (1) 22D{Decimal} ----------+ (2) "Orange"{String}

Perfect. So we did the Join, Got results, and know that they’re correct. Let’s put them into a dataset…

After hours of examples of  trying to get “CopyToDataSet” working, I found that the problem is, “CopyToDataSet” requires a stupefying amount of tweaking to make it work. Ok, so we did that and I can now use CopyToDataSet.

Ran it and I go this:

------------------------------------------
mRows        | sRows
------------------------------------------
System.Data.DataRow | System.Data.DataRow
System.Data.DataRow | System.Data.DataRow
System.Data.DataRow | System.Data.DataRow
System.Data.DataRow | System.Data.DataRow

My Desired Result is a Datatable with the following data and format:

ApplesKey | Cost... | Color...| O...Key | Cost...| Color...
  1   |  1  | Red  |  1  | 20  | Orange
  2   |  2  | Green |  2  | 21  | Orange
  3   |  3  | Yellow |  3  | 22  | Orange

ps: This interface is not so good at plain text…/

By the way, this function gets results  stupid fast.