2016-07-24 72 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

可以從dataGridView使用LINQ到對象的源移除重複的行,並設置新的對象作爲新的DataSource

方法一: 示例:假設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之前檢查重複項。 在用戶輸入的情況下:在創建行之前還要檢查重複項。