我有一个DataTable
,有时两行或更多行的所有列中的值都重复。我想获得独特的DataTable。 here和here的解决方案对我不起作用,因为我有很多列,并且根据某些条件,列数会发生变化。
我在想也许是这样
System.Data.DataTable table = new System.Data.DataTable(); // already fulfilled table
DataView view = new DataView(table);
var tableDistinct = view.ToTable(true, table.Columns);
但是我不能通过table.Columns
作为参数。
答案 0 :(得分:3)
我不知道出了什么问题,因为您还没有说什么不起作用。但是,您可以使用LINQ(-TO-DataTable):
table = table.AsEnumerable()
.GroupBy(r => new{ Col1 = r["Col1"], Col2 = r["Col2"], Col3 = r["Col3"] })
.Select(g => g.First())
.CopyToDataTable();
根据您的列列表更改匿名类型中的列。
答案 1 :(得分:1)
ToTable访问一个字符串参数列表,下面的代码应将所有列转换为字符串数组,因此您不必手动输入
System.Data.DataTable table = new System.Data.DataTable(); // already fulfilled table
DataView view = new DataView(table);
var tableDistinct = view.ToTable(true, table.Columns.Cast<DataColumn>().Select(z=>z.ColumnName).ToArray());