Null replacement - Is this LINQ readable?
List.ForEach might have its uses, but I wouldn't use it here. It's not "wrong" per se, but a classic foreach loop 


is at least as easy to read as your LINQ expression,
does not require the explicit Cast&lt;...&gt;(),
does not require ToList().


If you put it on one line, it is actually shorter than your LINQ-based solution.

foreach(DataGridViewRow row in dGV_factory.Rows)
{
      //Replace every null cells with an empty string
      foreach (DataGridViewCell cell in row.Cells) cell.Value = cell.Value ?? "";
}


Although, for readability, I'd prefer:

foreach (DataGridViewRow row in dGV_factory.Rows)
{
      foreach (DataGridViewCell cell in row.Cells)
      {
          cell.Value = cell.Value ?? "";
      }
}


(Of course, this is still a great improvement over your co-worker's code.)