DataColumn Name de DataRow (não DataTable)

Preciso iterar o nome da coluna e o tipo de dados da coluna de uma linha específica. Todos os exemplos que vi fizeram uma iteração de toda uma tabela de dados. Eu quero passar uma única linha para uma função para fazer um monte de processamento condicional. Eu quero separar o processamento condicional para facilitar a legibilidade.

Isso é o que eu tenho:

private void doMore(DataRow dr)
{
    foreach (DataColumn c in dr.ItemArray)  //loop through the columns. 
    {
        MessageBox.Show(c.ColumnName.ToString());
    }
}

O erro retornado é

System.InvalidCastException: não é possível converter objeto do tipo 'System.String' para digitar 'System.Data.DataColumn'.

Como eu poderia obter o nome da coluna da linha ou não tenho escolha e deve passar toda a tabela de dados para a função?

questionAnswers(4)

yourAnswerToTheQuestion