[C#] La mejor forma de eliminar entradas duplicadas de una tabla de datos



Answers

Haga dtEmp en su DataTable de trabajo actual:

DataTable distinctTable = dtEmp.DefaultView.ToTable( /*distinct*/ true);

Es agradable.

Question

¿Cuál es la mejor manera de eliminar entradas duplicadas de una tabla de datos?




Aquí es una manera fácil y rápida usando AsEnumerable().Distinct()

private DataTable RemoveDuplicatesRecords(DataTable dt)
{
    //Returns just 5 unique rows
    var UniqueRows = dt.AsEnumerable().Distinct(DataRowComparer.Default);
    DataTable dt2 = UniqueRows.CopyToDataTable();
    return dt2;
}

HAGA CLIC para visitar mi blog para más detalles




Puede usar el método DefaultView.ToTable de una DataTable para hacer el filtrado así (adaptarse a C #):

 Public Sub RemoveDuplicateRows(ByRef rDataTable As DataTable)
    Dim pNewDataTable As DataTable
    Dim pCurrentRowCopy As DataRow
    Dim pColumnList As New List(Of String)
    Dim pColumn As DataColumn

    'Build column list
    For Each pColumn In rDataTable.Columns
        pColumnList.Add(pColumn.ColumnName)
    Next

    'Filter by all columns
    pNewDataTable = rDataTable.DefaultView.ToTable(True, pColumnList.ToArray)

    rDataTable = rDataTable.Clone

    'Import rows into original table structure
    For Each pCurrentRowCopy In pNewDataTable.Rows
        rDataTable.ImportRow(pCurrentRowCopy)
    Next
End Sub



Una manera simple sería:

 var newDt= dt.AsEnumerable()
                 .GroupBy(x => x.Field<int>("ColumnName"))
                 .Select(y => y.First())
                 .CopyToDataTable();





Links