Вы знаете, что DataRow является строкой DataTable , правильной?
То, что у вас уже есть, проходит по каждой строке. Вам просто нужно следить за количеством строк, чтобы получить текущий ряд.
int i = 0;
int index = 0;
foreach (DataRow row in dt.Rows)
{
index = i;
// do stuff
i++;
}