Ускорение удаления одинаковых строк DataGridView - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Написал программу по сканированию папки и извлечению их txt файлов ней текста и импорта его в DataGridView Дальше по нажатию кнопки идет подсчет и удаление повторяющихся строк
Время его выполнения около 20 минут, возможно ли каким-нибудь образом ускорить сие дело? Или нужно по другому выполнить эти задачи? суть программы - сканирование плей-листов за 3 месяца за каждый день и составление отчета по количеству выходов песен за этот срок, импорт из базы недостающих данных и экспорт в ексель

Решение задачи: «Ускорение удаления одинаковых строк DataGridView»

textual
Листинг программы
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Dim example() As String = {"110311.txt", "010411.txt", "110511.txt", "110311.txt", _
                             "200311.txt", "050211.txt", "111111.txt", "220311.txt", _
                             "010611.txt", "181011.txt", "210311.txt", "010511.txt", _
                             "170311.txt", "260111.txt", "190811.txt"}
    Dim yy As Integer = NumericUpDown2.Value 'год (2000,...,2025)
    Dim kv As Integer = NumericUpDown1.Value 'квартал (1,2,3,4)
    Dim dt1 As Date
    Dim dt2 As Date
    getDt(yy, kv, dt1, dt2)
    Dim sel = (From ee As String In example Where betweenDates(ee, dt1, dt2) = True).ToArray
    'смотрим результат
    Dim ss As String = String.Join(vbCrLf, sel)
    MsgBox(ss)
End Sub
Private Sub getDt(ByVal y As Integer, ByVal k As Integer, ByRef dt1 As Date, ByRef dt2 As Date)
    Dim st As Integer = (k - 1) * 3 + 1
    dt1 = New Date(y, st, 1)
    If k = 4 Then
        dt2 = (New Date(y + 1, 12, 31))
    Else
        dt2 = (New Date(y, st + 3, 1)).AddDays(-1)
    End If
End Sub
Private Function betweenDates(ByVal ss As String, ByVal d1 As Date, ByVal d2 As Date) As Boolean
    Dim s As String = ss.Substring(0, ss.Length - 4)
    Dim d As Integer
    Dim bb As Boolean
    If s.Length = 6 Then
        d = CInt(s.Substring(0, 2))
    Else
        d = CInt(s.Substring(0, 1))
    End If
    Dim dd As Date = New Date(2000 + CInt(s.Substring(s.Length - 2)), CInt(s.Substring(s.Length - 4, 2)), d)
    If dd >= d1 AndAlso dd <= d2 Then bb = True
    Return bb
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

9   голосов , оценка 4.556 из 5