去除DataTable中的重复行

本文介绍了一种简单有效的方法来去除DataTable中的重复行,通过使用DataView的ToTable方法,可以轻松实现这一目标,同时提供了详细的代码示例。

      在开发过程中,我们有时候会遇到这样或那样的情况以至于DataTable中存在重复行,但是我们有想要去掉这些重复行,我们可以采用如下方法,以代替复杂的循环判断。

 

 

      之后再用新的dtGrid替换DataSet中相应的DataTable即可。

 

      在这个过程中,我们用到了DataView提供的重载方法ToTable。以下内容来源于http://msdn.microsoft.com/zh-cn/library/a8ycds2f.aspx

 

1、ToTable()方法

返回值
类型:System.Data . . :: .DataTable
一个新的 DataTable 实例,其中包含所请求的行和列。

 

备注

 

由于此方法不允许指定输出 DataTable 的名称,因此其名称与源 DataTable 相同。由于此方法不允许指定可用列的子集,因此输出表与输入表包含相同的列。 

 

示例

 

下面的控制台应用程序示例创建一个 DataTable,用数据填充 DataTable,并根据原始数据创建一个筛选视图,最后创建一个包含筛选出的行的 DataTable

 

 

 

该示例在控制台窗口中显示以下文本:


Original table name: NewTable
Current Values in Table
1, Fruit, Apple, 14
2, Fruit, Orange, 27
3, Bread, Muffin, 23
4, Fish, Salmon, 12

 

Current Values in View
2, Fruit, Orange, 27
3, Bread, Muffin, 23

 

Table created from filtered DataView
2, Fruit, Orange, 27
3, Bread, Muffin, 23

New table name: NewTable 

 

 

2、ToTable(String)方法

参数
tableName
类型:System . . :: .String
返回的 DataTable 的名称。
返回值

类型:System.Data..::.DataTable
一个新的 DataTable 实例,其中包含所请求的行和列。

备注

 

由于此方法不允许指定可用列的子集,因此输出表与输入表包含相同的列。

 

示例

 

下面的控制台应用程序示例创建一个 DataTable,用数据填充 DataTable,并根据原始数据创建一个筛选视图,最后用一个新名称创建包含筛选出的行的 DataTable。 

 

 

该示例在控制台窗口中显示以下文本:

 
Original table name: NewTable
Current Values in Table
1, Fruit, Apple, 14
2, Fruit, Orange, 27
3, Bread, Muffin, 23
4, Fish, Salmon, 12

 

Current Values in View
2, Fruit, Orange, 27
3, Bread, Muffin, 23

 

Table created from filtered DataView
2, Fruit, Orange, 27
3, Bread, Muffin, 23

New table name: FilteredTable

 

3、ToTable(Boolean,String[])方法 

参数
distinct
类型:System . . :: .Boolean
如果为 true,则返回的 DataTable 将包含所有列都具有不同值的行。默认值为 false
columnNames
类型: array<System . . :: .String > [] () []
一个字符串数组,包含要包括在返回的 DataTable 中的列名的列表。 DataTable 包含指定的列,其顺序与这些列在该数组中的顺序相同
返回值

类型:System.Data..::.DataTable
一个新的 DataTable 实例,其中包含所请求的行和列。

 

备注

 

由于此方法不允许指定输出 DataTable 的名称,因此其名称与源 DataTable 的名称相同。

 

 

 

 

 

 

 

下面的控制台应用程序示例创建一个 DataTable,用数据填充 DataTable ,对 DataView 进行排序,最后创建一个仅包含两个列的 DataTable ,这两个列仅限于所有值都唯一的行。

 

 

 

 

 

 

该示例在控制台窗口中显示以下文本:

 
Original table name: NewTable
Current Values in Table
1, Fruit, Apple, 14
2, Fruit, Orange, 27
3, Bread, Muffin, 23
4, Fish, Salmon, 12
5, Fish, Salmon, 15
6, Bread, Croissant, 23

 

Current Values in View
3, Bread, Muffin, 23
6, Bread, Croissant, 23
4, Fish, Salmon, 12
5, Fish, Salmon, 15
1, Fruit, Apple, 14
2, Fruit, Orange, 27

 

Table created from sorted DataView
Bread, 23
Fish, 12
Fish, 15
Fruit, 14
Fruit, 27

 

New table name: NewTable

 

4、ToTable(String,Boolean,String[])方法

参数
tableName
类型:System . . :: .String
返回的 DataTable 的名称。
distinct
类型:System . . :: .Boolean
如果为 true,则返回的 DataTable 将包含所有列都具有不同值的行。默认值为 false
columnNames
类型: array<System . . :: .String > [] () []
一个字符串数组,包含要包括在返回的 DataTable 中的列名的列表。 DataTable 包含指定的列,其顺序与这些列在该数组中的顺序相同。
返回值
类型:System.Data . . :: .DataTable
一个新的 DataTable 实例,其中包含所请求的行和列。

如果必须检索可用列的子集中的不同的值,请使用 ToTable 方法的此重载版本,为返回的 DataTable 指定一个新名称。如果不需要不同的行或列的子集,请参见 ToTable

 

下面的控制台应用程序示例创建一个 DataTable,用数据填充 DataTable,对 DataView 进行排序,最后使用新的名称创建一个仅包含两个列的 DataTable ,这两个列仅限于所有值都唯一的行。

 

 

该示例在控制台窗口中显示以下输出:


Original table name: NewTable
Current Values in Table
1, Fruit, Apple, 14
2, Fruit, Orange, 27
3, Bread, Muffin, 23
4, Fish, Salmon, 12
5, Fish, Salmon, 15
6, Bread, Croissant, 23

 

Current Values in View
3, Bread, Muffin, 23
6, Bread, Croissant, 23
4, Fish, Salmon, 12
5, Fish, Salmon, 15
1, Fruit, Apple, 14
2, Fruit, Orange, 27

 

Table created from sorted DataView
Bread, 23
Fish, 12
Fish, 15
Fruit, 14
Fruit, 27

 

New table name: UniqueData

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值