Удаление повторов в DataTable - Visual Basic .NET
Формулировка задачи:
Здравствуйте!
Имею таблицу в 2 столбца. Хочу удалить строки, в которых имеются одинаковые значения в первом столбце (у меня он называется Names).
Накидал вот такую функцию, она работает, но медленно. Наверняка есть способ быстрее и красивее. Подскажите, пожалуйста.
Решение задачи: «Удаление повторов в DataTable»
textual
Листинг программы
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
Dim tb As DataTable = CreateTabl()
DataGridView1.DataSource = CropeArr(tb)
End Sub
Private Function CropeArr(ByVal Arr As System.Data.DataTable) As System.Data.DataTable
'в таблице Arr два поля Фамилия и Дата
Dim tbb = Arr.AsEnumerable().Distinct(New rComp)
Dim tb As New DataTable
tb.Columns.Add("Фамилия", System.Type.GetType("System.String"))
tb.Columns.Add("Дата", System.Type.GetType("System.DateTime"))
For Each r As DataRow In tbb
tb.Rows.Add(r.ItemArray)
Next
Return tb
End Function
Private Class rComp : Implements IEqualityComparer(Of DataRow)
Public Overloads Function Equals(ByVal b1 As DataRow, ByVal b2 As DataRow) _
As Boolean Implements IEqualityComparer(Of DataRow).Equals
Dim bb As Boolean
If String.Compare(b1.Item(0), b2.Item(0)) = 0 Then bb = True
Return bb
End Function
Public Overloads Function GetHashCode(ByVal bx As DataRow) _
As Integer Implements IEqualityComparer(Of DataRow).GetHashCode
Dim hCode As Integer = bx(0).GetHashCode
Return hCode.GetHashCode()
End Function
End Class