Удаление повторов в 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

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы