public static DataTable RemoveDuplicates(DataTable dt, DataColumn[] keyColumns, string SavePath, string currentMapping)
{
int rowNdx = 0;
var res = new List<DataTable>();
DataTable duplicatesTable = dt.Clone();
var qFields = string.Join(", ", keyColumns.Select(x => "it[\"" + x.ColumnName + "\"] as " + x.ColumnName.Replace(" ","") + ""));
var q = dt.AsEnumerable()
.AsQueryable()
.GroupBy("new(" + qFields + ")", "it")
.Select("new (it as Data)");
var dtemp = dt.Clone();
foreach (dynamic d in q)
{
// dtemp.Rows.Add(d.Data.First().ItemArray());
rowNdx = 0;
foreach (var row in d.Data)
{
if (rowNdx == 0)
{
dtemp.Rows.Add(row.ItemArray);
}
else
{
duplicatesTable.Rows.Add(row.ItemArray);
}
rowNdx++;
}
}
string newFileName = string.Format("{0}{1}", "test", rowNdx);
FileSaveHelper.ExportDataTable(duplicatesTable, string.Format("{0}\\{1}", SavePath, currentMapping + "_Duplicates.xlsx"));
return dtemp;
//while (rowNdx < tbl.Rows.Count - 1)
//{
// DataRow[] dups = FindDups(tbl, rowNdx, keyColumns);
// if (dups.Length > 0)
// {
// foreach (DataRow dup in dups)
// {
// duplicatesTable.ImportRow(dup);
// tbl.Rows.Remove(dup);
// }
// tbl.Rows.Add(dups.FirstOrDefault());
// }
// else
// {
// rowNdx++;
// }
//}
// return duplicatesTable;
}