选择不同的数据表行

时间:2018-12-17 14:49:51

标签: c# datatable

我有一个DataTable,有时两行或更多行的所有列中的值都重复。我想获得独特的DataTable。 herehere的解决方案对我不起作用,因为我有很多列,并且根据某些条件,列数会发生变化。

我在想也许是这样

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作为参数。

2 个答案:

答案 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());