I guess I just don't know where to start as far as syntax, I've gotten this far but I don't know if it will work because my Select statement isn't working:

Code:
Dim both = From row1 In AddressListDatatable.AsEnumerable()
                       Join row2 In GetMatrixFieldsDatatable.AsEnumerable()
                       On row1.Field(Of String)("Offercode") Equals row2.Field(Of String)("Code")
                       From row4 In AddressListDatatable.AsEnumerable()
                       Join row3 In GetMatrixFields2Datatable.AsEnumerable()
                       On row4.Field(Of String)("Offercode") Equals row3.Field(Of String)("Code2")
                       Select addressListColumnNames.Select(Function(alcn) row1(alcn)).Concat(matrix1ColumnNames.Select(Function(mcn) row2(mcn)))
            addressListColumnNames.Select(Function(alcn2) row4(alcn2)).Concat(matrix2ColumnNames.Select(Function(mcn2) row3(mcn2)))
I am not sure that using "row4" for the same addresslistDataTable is necessary...