>>>>Viv,
>>>>
>>>>After I switched to List and Linq, the performance is 10 times slower than it was :( The procedure used to execute in ~800 ms. Now it executes in 8000 ms.
>>>
>>>As John says, must be something else going on. Linq should be faster then a coded iteration....
>>
>>Right, I bet the problem is here with the CAST (that's what I was getting yesterday night)
>>
>>
>> columns = (from DataRow r in reader.GetSchemaTable().AsEnumerable()
>> select new ColumnSchema
>> {
>> ColumnName = (String) r["ColumnName"],
>> ColumnSize = (Int32) r["ColumnSize"],
>> DbType = (SqlDbType) r["ProviderType"],
>> DataType = reader.GetFieldType((int)r["ColumnOrdinal"]),
>> Precision = (Int16) r["NumericPrecision"],
>> Scale = (Int16) r["NumericScale"],
>> IsIdentity = (Boolean) r["IsIdentity"]
>> }).ToList();
>>
>>I am going to debug it in a few minutes and see what needs to be adjusted.
>
>Why are you using reader.GetFieldType((int)r["ColumnOrdinal"]) rather than (Type) r["DataType"] ?
I saw that too, but wasn't gonna say anything (it'd be a learning experience). Its probably looping through the readers collection multiple times.