过滤DataTable中的重复记录

六月ゝ 毕业季﹏ 提交于 2020-03-08 08:32:27

在实际项目中,通过前台数据构造出来的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()一共有四个重载方法:

1、ToTable()

2、ToTable(String)

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 包含指定的列,其顺序与这些列在该数组中的顺序相同。

返回值

类型:System.Data.DataTable

一个新的 DataTable 实例,其中包含所请求的行和列。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!