How to select distinct rows in a datatable and store into an array
Solution 1:
DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "Column1", "Column2" ...);
Solution 2:
Following single line of code will avoid the duplicate rows of a DataTable
:
dataTable.DefaultView.ToTable(true, "employeeid");
Where:
first parameter in
ToTable()
is a boolean which indicates whether you want distinct rows or not.second parameter in the
ToTable()
is the column name based on which we have to select distinct rows. Only these columns will be in the returned datatable.
The same can be done from a DataSet
, by accessing a specific DataTable
:
dataSet.Tables["Employee"].DefaultView.ToTable(true, "employeeid");
Solution 3:
DataTable dt = new DataTable();
dt.Columns.Add("IntValue", typeof(int));
dt.Columns.Add("StringValue", typeof(string));
dt.Rows.Add(1, "1");
dt.Rows.Add(1, "1");
dt.Rows.Add(1, "1");
dt.Rows.Add(2, "2");
dt.Rows.Add(2, "2");
var x = (from r in dt.AsEnumerable()
select r["IntValue"]).Distinct().ToList();