Search DataGridView for duplicates

  • Thread starter Thread starter Barak Aricha Tamir
  • Start date Start date
B

Barak Aricha Tamir

Guest
I have this code to find duplicate values in DataGridView and mark them with different colors.

var rows = dataGridView1.Rows.OfType<DataGridViewRow>().Reverse().Skip(1); //ignore the last empty line
var dupRos = rows.GroupBy(r => r.Cells["Date"].Value.ToString()).Where(g => g.Count() > 1).SelectMany(r => r.ToList());

foreach (var r in dupRos)
{
r.DefaultCellStyle.BackColor = Color.Pink;
}
foreach (var r in rows.Except(dupRos))
{
r.DefaultCellStyle.BackColor = Color.Cyan;
}


The code works fine.

I have changed the code so it will write in the second column the word Unique or Duplicate and a counter number for the duplicate cells.

int counter = 1;
var rows = dataGridView1.Rows.OfType<DataGridViewRow>().Reverse().Skip(1); //ignore the last empty line
var dupRos = rows.GroupBy(r => r.Cells["Date"].Value.ToString()).Where(g => g.Count() > 1).SelectMany(r => r.ToList());

foreach (var r in dupRos)
{
r.DefaultCellStyle.BackColor = Color.Pink;
r.Cells["Time"].Value = "Dup" + counter;
counter++;
}
foreach (var r in rows.Except(dupRos))
{
r.DefaultCellStyle.BackColor = Color.Cyan;
r.Cells["Time"].Value = "Unick";
}


My problem is that the counter continues to count for all the duplicate groups and not reset itself every time its start with a different group of duplicate values.

How can I fix it?

Continue reading...
 
Back
Top