Fill a DataSet with nearly 20,0000 records using SqlDataAdapter
I would say the C# is fine, it's your database that is the issue.  Is the Stored procedure optimized?  Are the tables in the proper normalization?  Are your primary keys &amp; foreign keys set up properly? (you should get the point by now) 

Start there first since really everything is there.