2016-07-24 22 views
0

Ich habe eine DataGridView und ich versuche zu überprüfen, ob Zeile bereits vorhanden ist, wenn ja ich eine Schleife von äußeren "foreach" Anweisung überspringen möchte.DataGridView, wie Duplikate zu überspringen

Ich dachte mir so etwas aus, aber vielleicht gibt es dafür einen optimierten Weg.

(Diese Funktion aktuelle Zeile löschen und neu einfügen, nicht duplizieren)

(outer foreach) 
     for (int i = 0; i < dataGridViewFarm.RowCount; i++) 
     { 
      if (villageParams[3] == dataGridViewFarm.Rows[i].Cells[3].Value.ToString()) 
      { 
       dataGridViewFarm.Rows.Remove(dataGridViewFarm.Rows[i]); 
      } 
     } 
+0

Sie müssen "i" verringern, wenn Sie eine Zeile gelöscht haben, indem Sie 'i -' nach der Zeile 'Remove' hinzufügen. – user3185569

Antwort

0

Sie können duplizierte Zeilen aus der Quelle von dataGridView mit Linq zu Objekten entfernen, und setzen Sie das neue Objekt als neue Datasource

Method1: Beispiel: Angenommen, dass cell[3]mycell3

var noDuplicationList = myList.GroupBy(x => x.mycell3) 
        .Select(g => g.First()) 
        .ToList(); 

Method2 ist : Verwenden Sie im MoreLinq-Projekt DistinctBy()

Install-Paket morelinq

var noDuplicationList = myList.DistinctBy(x => x.mycell3).ToList(); 
0

Es Nähte wie Sie Windows Forms verwenden. Das Hinzufügen dieses Tags kann hilfreich sein, um Antworten zu erhalten.

Nie desto weniger. Wie werden diese Zeilen erstellt? Benutzereingabe oder eine Sammlung bilden? Im Falle einer Sammlung: Ich würde nur nach Duplikaten suchen, bevor Sie die dataGridView hinzufügen. Bei Benutzereingabe: Vor dem Erstellen einer Zeile auch auf Duplikate prüfen.