Αντιγραφή ενός DataRow σε ένα νέο μέσα στον ίδιο πίνακα

public static class DataRowExtra
{
/// <summary>
/// Αντιγραφή ενός DataRow σε ένα νέο μέσα στον ίδιο πίνακα (Προϋπόθεση είναι το dataTable να έχει (int)Id και να είναι AutoIncrement)
/// </summary>
/// <param name="dataTable">Δίνουμε το DataTable</param>
/// <param name="dataRow">Δίνουμε το DataRow που θέλουμε να αντιγράψουμε</param>
/// <remarks>Usage: DataRowClone(tableName, dataRow)</remarks>
/// <returns>Επιστρέφει το νέο DataRow</returns>
public static DataRow Clone(DataTable dataTable, DataRow dataRow) {
   if (dataTable == null || dataRow == null) return null;
   int newId = 0, position = dataTable.Rows.Count;
   object[] newDataRow = dataRow.ItemArray;
   foreach (DataColumn dc in dataTable.Columns) {
      if (!dc.AutoIncrement) continue;
      foreach (DataRow dr in dataTable.Rows) 
         if ((int)(dr[dc.Ordinal]) < newId) newId = (int)(dr[dc.Ordinal]);
      newDataRow[dc.Ordinal] = newId - 1;
      break;
   }
   dataTable.Rows.Add(newDataRow);
   return dataTable.Rows[position];
   }
}