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의 소스에서 중복 행을 제거하고 새 데이터 소스로 새 개체를 설정할 수 있습니다

방법 항목 : 예 : 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

(이 기능은 현재 행을 삭제하고, 중복하지 않도록, 새로 삽입). 이 태그를 추가하면 답변을 얻을 수 있습니다.

결코 적습니다. 행이 어떻게 생성됩니까? 사용자 입력 또는 컬렉션 만들기? 컬렉션의 경우 : dataGridView에를 추가하기 전에 중복 여부를 확인하기 만하면됩니다. 사용자 입력의 경우 : 행을 만들기 전에 중복 여부도 확인하십시오.