What's the difference between reading a value from an SqlDataReader using this syntax:
Dim reader As SqlClient.SqlDataReader
reader("value").ToString()
OR
Dim reader As SqlClient.SqlDataReader
reader.GetString(reader.GetOrdinal("value"))
I think that the reason to use GetOrdinal() is so that you can cache the result and re-use it multiple times for performance.
E.g.
Dim reader As SqlClient.SqlDataReader
int valueOrdinal = reader.GetOrdinal("value");
while ( ... )
{
var value = reader.GetString(valueOrdinal);
}