在实际项目中,通过前台数据构造出来的DataTable中往往存在重复的记录,需要对此DataTable做滤重处理,可以功过DataView.ToTable()方法来实现,具体示例如下:
代码
1 public FilterDuplicate() 2 { 3 DataTable dt = new DataTable("person"); 4 dt.Columns.Add("name", typeof(string)); 5 dt.Columns.Add("age", typeof(string)); 6 dt.Columns.Add("sex", typeof(string)); 7 8 dt.Rows.Add("makan", "28", "男"); 9 dt.Rows.Add("makan", "28", "男");10 dt.Rows.Add("zhengrui", "28", "男");11 12 Console.WriteLine("Source DataTable Info");13 outputDt(dt);14 15 string[] distinctcols = new string[(dt.Columns.Count)];16 foreach (DataColumn dc in dt.Columns)17 {18 distinctcols[dc.Ordinal] = dc.ColumnName;19 }20 21 DataTable dtfd = new DataTable("personFilterDup");22 DataView mydataview = new DataView(dt);23 dtfd = mydataview.ToTable(true, distinctcols);24 25 Console.WriteLine("FilterDuplicate DataTable Info");26 outputDt(dtfd);27 }28 29 public void outputDt(DataTable dt)30 {31 Console.WriteLine("DataTable Name="+dt.TableName);32 foreach (DataRow dr in dt.Rows)33 {34 foreach (DataColumn dc in dt.Columns)35 {36 Console.Write(dc.ColumnName + "=" + dr[dc.Ordinal].ToString() + "\t");37 }38 Console.WriteLine("");39 }40 }
通过以上方法,即可快速实现滤重处理.ToTable()一共有四个重载方法:
3、ToTable(Boolean, array<String>[])
4、ToTable(String, Boolean, array<String>[])
- 参数说明:
- tableName
- 类型:System.String
返回的 DataTable 的名称。
- distinct
- 类型:System.Boolean
如果为 true,则返回的 DataTable 将包含所有列都具有不同值的行。默认值为 false。
- columnNames
- 类型:array<System.String>[]
一个字符串数组,包含要包括在返回的 DataTable 中的列名的列表。DataTable 包含指定的列,其顺序与这些列在该数组中的顺序相同。
返回值
一个新的 DataTable 实例,其中包含所请求的行和列。
来源:https://www.cnblogs.com/advocate/archive/2010/07/27/1786095.html