Try "old fashioned" loop:
foreach (DataRow dr in dt.Tables[0].Rows)
{
}
But my suspicion is that problem is in the data itself. Is data coming from the database? Did you check how database query is performing outside of your code? More details you provide better answers you will get.