The individual cells in a DataTable can have a null value in the form of System.DbNull.Value. If the DataTable is created by querying a database through ADO.NET, you can write the SQL statement in a way eliminates nulls. It could look like this “SELECT isnull(name, 'n/a') AS name FROM products”.
However, there can be scenarios where you don’t have the chance to manipulate the DataTable before you use it. Such a scenario have I recently been involved in and the problem was that the data retrieved from a database could contain nulls in any of the integer type columns. If I then bind the DataTable to a GridView in ASP.NET, I had to do a lot of workarounds to calculate footers and other values based on those columns.
Instead of doing the workarounds in a lot of different places in the code, I decided it was a better idea to clean the DataTable for nulls before it is used. That led to the CleanDataTable method below, that replaces null values with zeros for a few integer type columns.
/// In the case of null values in a data table, this method
/// will turn all nulls into zeros instead.
public static DataTable CleanDataTable(DataTable dt)
for (int a = 0; a < dt.Rows.Count; a++)
for (int i = 0; i < dt.Columns.Count; i++)
if (dt.Rows[a][i] == DBNull.Value)
Type type = dt.Columns[i].DataType;
if (type == typeof(int) || type == typeof(float) || type == typeof(double))
dt.Columns[i].ReadOnly = false;
dt.Rows[a][i] = 0.0F;
The point is that you only have to clean it once to avoid any workaround for handling null values.