过滤DataTable中的重复记录

在实际项目中,通过前台数据构造出来的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 实例,其中包含所请求的行和列。

你可能感兴趣的:(Datatable)