2017-10-31 2 views
0

엑셀 시트의 데이터를 그리드보기로 업로드해야합니다. 하지만 중복 행 삽입을 방지해야합니다. 그렇다면 데이터 세트로 어떻게이 작업을 수행 할 수 있습니까? 데이터 집합에 중복 된 데이터가 포함되어 있는지 확인하려면 어떻게해야합니까? 중복되는 경우 오류 메시지를 제공해야합니다. 여기 내 코드가있다.C에서 데이터 집합의 중복 레코드 제거 #

odfExcelGet.Title = "Excel Upload"; 

odfExcelGet.FileName = "Excel"; 
odfExcelGet.Filter = "Excel File (*.xls;*.xlsx;)|*.xls;*.xlsx;"; 
odfExcelGet.InitialDirectory = @"c:\"; 
odfExcelGet.ShowDialog(); 
txtAddress.Text = odfExcelGet.FileName; 

this.Cursor = Cursors.WaitCursor; 

string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; 
ConnectionString += odfExcelGet.FileName; 
ConnectionString += @";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"; 

OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", ConnectionString); 
da.Fill(dsMain); 

dgGrid.DataSource = dsMain.Tables[0]; 

중복을 방지하려면이 코드를 어떻게 수정해야합니까?

+0

위의 링크를 참조했습니다. 이 작업을 수행하는 다른 방법이 있습니까? 나는 해시 테이블을 사용하지 않고 말하고 싶습니까? – Didu

+0

'Select * from [Sheet1 $]'대신에'[Sheet1 $]'에서'distinct *를 선택하십시오. 그러나 당신의 정의에 따라 달라집니다 –

+0

감사 Nick. 하지만 내 요구 사항은이 솔루션과 다릅니다. – Didu

답변

0

간단한 방법은 열 유형을 고유 한 열 유형으로 바꿉니다.

var newDataTable = dsMain.Tables[0]; 
dgGrid.DataSource = newDataTable.AsEnumerable().GroupBy(col => col.Field<ColumnType>("ColumnName")) 
.Select(x=>x.First()).CopyToDataTable(); 
관련 문제