[c#] Usuwanie powtarzających się wierszy w datagridview

Witam. Dziś mam taki problem, że nie do końca działa mi usuwanie wierszy z dataGridView.

kod:

for (int i = 0; i < dataGridView2.Rows.Count - 1; i++)

            {

                licz_pow = 0;

                wyrazenie = dataGridView2[0, i].Value.ToString();

                for (int j = 1; j < dataGridView2.Rows.Count - 1; j++)

                {

                    wyrazenie2 = dataGridView2[0, j].Value.ToString();

                    if (wyrazenie == wyrazenie2)

                    {

                        licz_pow++;

                        if (licz_pow >= 1)

                            dataGridView2.Rows.Remove(dataGridView2.Rows[j]);

                    }

                    licz_pow = 0;

                }

                wyrazenie = "";

                wyrazenie2 = "";

            }

Nie mam już pomysłu jak to można zrobić, żeby usuwać powtarzające się wiersze na podstawie wartości z danej komórki. Jakieś pomysły?

Problem jest tu taki, że operujesz na kolekcji którą modyfikujesz.

Krótki przykład: załóżmy, że 2, 3 i 4 wiersz są takie same względem twojego kryterium.

Zmienna j wskazuje na 3 wiersz i warunek wymuszający usunięcie wiersza jest spełniony.

Po usunięciu wiersza trzeciego wiersz czwarty staje się wierszem trzecim, ale zmienna j jest inkrementowana dla kolejnej iteracji i stary wiersz 4 jest pominięty.

Możliwe rozwiązania:

  1. Zmniejszenie zmiennej j w momencie spełnienia warunku,

  2. Operowanie na kolekcji od ostatniego elementu. Usunięcie wiersza nie wpłynie na wiersze o niższym indeksie jeszcze nie sprawdzane.

  3. Stworzenie tymczasowej kolekcji do przekopiowania danych - jedna kolekcja read only.

a którą metodę wykorzystać, by jak najmniej zmieniać w kodzie?

93158851966890355914.png

Jak usunąć powtarzające się linie w DataGridView (prawym)? Chcę, żeby została jedna wartość bez powtórzeń. Pomóżcie, bo już próbowałem na różne sposoby i nic mi nie wychodzi

Przy czym jedynie drugie rozwiązanie jest porządne, bo reszta to takie zaciemniające kod obchodzenie problemu, który się samemu stworzyło.

Witam,

Może się zastanów dlaczego one tam się znalazły… niezłym pomysłem jest usuwanie niepotrzebnych danych przed wysłaniem ich do kontrolki tak by odseparować prezentację od logiki biznesowej

Pozdrawiam,

mr-owl

Ja też bym najpierw zapytanie przejrzał czemu zwraca dane podwójnie i tam się tego pozbył a nie w gridzie.