Сравните две таблицы данных, чтобы увидеть, какие поля были изменены - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь сравнить две таблицы данных, каждая таблица данных будет содержать моментальный снимок списка деталей в определенный момент времени. Так, например, DT1 покажет детали такими, какими они были на 31/3, а DT2 покажет такими, какими они были на 15/04. Это в конечном счете должно будет выделить представление данных (зеленый - новая запись, красный - удаленная запись, желтый - измененная ячейка)

Я могу сделать (и иметь) это с вложенными для следующих циклов, но это медленно для обработки 1000 записей. В настоящее время я добавляю фиктивное поле к каждой строке в списке деталей «NAAANNAA», где «N» - это поле без изменений, а «A» - это измененное поле между двумя DT. «Я» для вставки и «D» для удаления. У метода рисования в ячейке просто есть style.backcolor = color.yellow, где string.instr (dgv.currentcell.columnindex) = "A" (воздушный код, на данный момент не требуется p c)

Есть ли более простой способ сделать с Linq?

Приложение VB в VS2010, но скоро будет VB или C# в VS2019. Winforms с SQL backend.

Из памяти в другом месте кода, он делает вложенные для следующих циклов, это просто форматирование ячеек -> Обновлено с некоторым кодом

Private Sub dgvDOIssue_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvDOIssue.CellFormatting
    Dim changed_flags As String = ""

    Try
        If UcDOCompare1.DataGridView1.Rows.Count >= e.RowIndex Then
            With UcDOCompare1.DataGridView1

                changed_flags = .Rows(e.RowIndex).Cells(.Columns.Count - 1).Value
                If Strings.Mid(changed_flags, e.ColumnIndex + 1, 1) = "I" Then
                    e.CellStyle.BackColor = Color.Green
                ElseIf Strings.Mid(changed_flags, e.ColumnIndex + 1, 1) = "A" Then
                    e.CellStyle.BackColor = Color.Yellow
                ElseIf Strings.Mid(changed_flags, e.ColumnIndex + 1, 1) = "G" Then
                    e.CellStyle.BackColor = Color.Pink
                Else
                    e.CellStyle.BackColor = Color.White
                End If

            End With
        End If

    Catch ex As Exception

    End Try

End к югу

...