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];
}
}