请教一下C# DataTable去除重复行的方法,重复行判断的要求是每个字段(字段名未知)都不一样,并且单元格需要去除空格,比如(A B)和(AB)认为是一样的。
DataTable dt = new DataTable();
DataTable tempTable =dt.DefaultView.ToTable("newTableName", true, new string[] { "列名1", "列名2" });
根据列名进行Distinct重映射
如果你要要求已经超出dt本身的范围了,那么请使用linq2datatable完成
具体代码我懒的写,你自己使用 “C# dt.AsEnumerable() Distinct”可以查询到资料--------提示Distinct委托可能需要重新实现比较器接口,如果你看的明白就自己实现,如果你看不明白,请mock一份模拟数据,贴到这里,我想会有人帮你实现
当然我先发一下老外的
https://stackoverflow.com/questions/20469467/select-distinct-from-datatable-asenumerable
你看看老外们怎么提问和回答的--这些还是需要学习的,会提问才有好回答
1.先遍历一遍,把空格都去掉
dt.Rows[i][j]=dt.Rows[i][j].ToString().Replace(" ","")
2.DataTable赋值给DataView
DataView dv=dt.DefaultView
3.DataView排序
dv.sort="列1,列2,列3,列4"
4.dt=dv.ToTable()
5.a从后往前遍历,把完全相同的行remove掉,由于已经排序,直接i+1和i比较即可
```c#
//x["spbh"].ToString().Length >= 8 select x["spbh"].ToString().Substring(0, 8)是你过滤条件
(from x in dt.AsEnumerable() where x["spbh"].ToString().Length >= 8 select x["spbh"].ToString().Substring(0, 8)).Distinct().CopyToDataTable();
```