1. 程式人生 > >去除DataTable中的重複行

去除DataTable中的重複行

      在開發過程中,我們有時候會遇到這樣或那樣的情況以至於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