2016-07-24 11 views
0

DataGridViewを持っていて、行がすでに存在するかどうかを確認しようとしています。外側の "foreach"ステートメントからループをスキップします。DataGridView、重複をスキップする方法

私はこのようなことを考えましたが、これを行うにはさらに最適化された方法があります。

(この機能は、現在の行を削除し、新しいものを挿入し、複製しないようにされて)

(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

'Remove'行の後に' i - 'を追加して行を削除した場合、' i'を減らす必要があります。 – user3185569

答えて

0

あなたは、オブジェクトへのLINQを使用してdataGridViewのソースから重複行を削除し、新しいデータソースとして新しいオブジェクトを設定することができます

方法1: 例:cell[3]mycell3

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

方法2であると仮定:MoreLinqプロジェクトでDistinctBy()を使用

インストールパッケージmorelinq

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

あなたがWindowsフォームを使用しているようですが、縫い目。このタグを追加すると、回答を得ることができます。

決して少なくありません。これらの行はどのように作成されますか?ユーザー入力またはコレクションの作成 コレクションの場合:dataGridViewに追加する前に重複をチェックするだけです。 ユーザー入力の場合:行を作成する前に重複をチェックしてください。

関連する問題