[Mono-bugs] [Bug 591397] System.Data.DataTableExtensions.CopyToDataTable(Of T) returns 0 Rows

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Mar 26 20:27:59 EDT 2010



--- Comment #5 from Tony Fish <tonyvfish at googlemail.com> 2010-03-27 00:27:58 UTC ---
Just to be completely clear about what I'm doing.  The only part of MONO I'm
using is the DataExtensions.  Everything else is .NET 2  .I'm doing this
because .Net 2.0 does not include LINQ which I need, but can not use .Net 3.x. 
So I use an open source implementation to allow me to do LINQ over objects
called LinqBridge.  However LinqBridge (LINQ over objects) does not include the
extension methods needed for working with datatables dat rows etc.  This is why
I use MONO DataExtensions to  provide this functionality

When the code calls the extension method o.CopyToDataTable()

DatatableExtensions.cs eventually invokes 

public static void CopyToDataTable<T> (this IEnumerable<T> source, DataTable
table, LoadOption options, FillErrorEventHandler errorHandler)
            where T : DataRow
            var reader = new RowEnumerableDataReader (source, 0);
            table.Load (reader, options, errorHandler);

Now keep in mind the code line   table.Load (reader, options, errorHandler);
When the table is a .NET version 2, the first call made by the table on the
reader is the sub  
public void Close ()
            e = null;
of RowEnumerableDataReader.cs

This is why I added this line to the contructor
//tf Added cos isClosed is called fist by MS
            _e = ((IEnumerable)this._source).GetEnumerator();

If e does not get set in the constructot , the .NET table thinks the reader is
closed and returns an un populated table.

So I've taken a look at your patched constructor now on CVS and added 1 line
back. ( please see attachment ). RowEnumerableDataReader.cs will now be more
compatible with .NET as well as MONO

Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list