>>>>>From the above link:
>>>>>Although this is useful, it does not allow tables to be created from a sequence of scalar types, from queries that project anonymous types, or from
queries that perform table joins>>>>
>>>>Right.
>>>>
>>>>I tried implementing the MS documented solution of creating custom CopyToTable method, but this seems to lead to other problems. First warning message I posted. I found I need to set ComVisible(false) to fix that message.
>>>>
>>>>But now I am getting the other warning
>>>>
>>>>Warning 4 "C:\Dev\Siriusware.Middleware\Siriusware.Middleware\bin\Debug\Siriusware.Middleware.dll" does not contain any types that can be registered for COM Interop. Siriusware.Middleware
>>>>
>>>>So, I am not sure if I need to pursue that method or try to figure something else. My end result is to produce a string and the only reason I need a datatable is because the method that generates that string accepts datatable.
>>>
>>>Since your original query uses a join (and CopyToDataTable() doesn't support it) there doesn't seem much point in pursuing that approach :-}
>>>
>>>Seems to me your options are:
>>>(a) Convert the query results into the required DataTable using code or
>>>(b) Writing a version of the method that accepts the IEnumerable.
>>>
>>>If the code in the method is complex then maybe write an overload that accepts the IEnumerable, converts it to a DataTable and passes that to the existing method?
>>
>>The code in the method is not very complex, but it has several implementations depending on Return Type.
>>
>>I am going to try now this solution
http://archive.msdn.microsoft.com/LinqEntityDataReader by MS employee David Browne.
>
>Why do you flit from one thing you can't understand to another, to another..... Just loop through the Linq collection and build a datatable. No problem at all...
Hmm. Simple enough if you have an already constructed, matching datatable. Otherwise the extension method Naomi found looks good....