Я пытаюсь сравнить две таблицы данных, каждая таблица данных будет содержать моментальный снимок списка деталей в определенный момент времени. Так, например, 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 к югу