You can use ToString on any indexed value in a DataRow, and it will return null if the field is DBNull:
string myNullableField = row["MyField"].ToString();
However, if you try to cast that same field as a string, you’ll get an exception:
string myNullableField = (string)row["MyField"]; //InvalidCastException!
But, the good thing about the InvalidCastException being thrown, is this gives us a nice little trick. We can use casting as a fail-safe. If we have a non-nullable field, and we get DBNull for ANY reason, we WANT the CLR to throw an exception (it makes it super-easy to debug):
string myNeverNullField = (string)row["MyField"]; //"MyField" is non-nullable. if we ever get NULL, // something went wrong; let's raise a red flag