# Region Remove repeated fields in datatable
/// <Summary>
/// </Summary>
/// <Param name = "sourcetable"> </param>
/// <Param name = "fieldnames"> </param>
/// <Returns> </returns>
Protected Datatable selectdistinct (datatable sourcetable, Params String [] Fieldnames)
{
Object [] Lastvalues;
Datatable newtable;
Datarow [] orderedrows;
//If (fieldnames = NULL | fieldnames. Length = 0)
//Throw new argumentnullexception ("fieldnames ");
// If fieldnames is empty, all columns are queried by default.
If (Fieldnames =Null | Fieldnames. Length = 0 )
{
Fieldnames = New String [Sourcetable. Columns. Count];
For ( Int I =0 ; I <sourcetable. Columns. Count; I ++)
{
Fieldnames [I] = sourcetable. Columns [I]. columnname;
}
}
Lastvalues = New Object [Fieldnames. Length];
Newtable = New Datatable ();
Foreach(StringFieldnameInFieldnames)
Newtable. Columns. Add (fieldname, sourcetable. Columns [fieldname]. datatype );
orderedrows = sourcetable. select ( "" , string . join ( " , " , fieldnames ));
foreach (datarow row in orderedrows)
{< br> If (! Fieldvaluesareequal (lastvalues, row, fieldnames)
{< br> newtable. Rows. Add (createrowclone (row, newtable. newrow (), fieldnames);
Setlastvalues (lastvalues, row, fieldnames );
}
}
Return Newtable;
}
Private Bool Fieldvaluesareequal (Object [] Lastvalues, datarow currentrow, String [] Fieldnames)
{
Bool Areequal = True ;
For ( Int I = 0 ; I <fieldnames. length; I ++)
{
If (Lastvalues [I] = Null |! Lastvalues [I]. Equals (currentrow [fieldnames [I])
{
Areequal = False ;
Break ;
}
}
return areequal;
}< br> private datarow createrowclone (datarow sourcerow, datarow newrow, string [] fieldnames)
{< br> string Field in fieldnames)
newrow [field] = sourcerow [field];
Return Newrow;
}
Private Void Setlastvalues ( Object [] Lastvalues, datarow sourcerow, String [] Fieldnames)
{
For ( Int I = 0 ; I <fieldnames. length; I ++)
Lastvalues [I] = sourcerow [fieldnames [I];
}
# Endregion
The call is as follows:
Datatable TBL = new datatable ();
TBL. Columns. Add ("ID", typeof (system. int32 ));
TBL. Columns. Add ("city", typeof (system. String ));
TBL. Columns. Add ("Province", typeof (system. String ));
TBL. Rows. Add (1, "Wuhan", "Hubei ");
TBL. Rows. Add (2, "Yingcheng", "Hubei ");
TBL. Rows. Add (3, "Wuhan", "Hubei ");
// datatable dt2 = selectdistinct (TBL, null);
datatable dt2 = selectdistinct (TBL, "city", "Province ");
// datatable dt2 = selectdistinct (TBL, new string [] {"city", "Province"});
This. datagridview1.datasource = dt2;