2012-01-24 2 views
4

데이터 테이블 안에 여러 개의 행이있는 데이터 테이블이 있습니다. 1 행이 더 있고이 행이 데이터 테이블의 기존 행과 중복되는지 확인하고 싶습니다. 그래서 내가 좋아하는 시도 : 여기두 데이터row를 비교하십시오.

DataTable dataTable = GetTable(); 
if (dataTable.Rows.Count > 1) 
{ 
    for (int i = 0; i < dataTable.Rows.Count; i++) 
    { 
     var dataRow = dataTable.Rows[i]; 

     if (dt.Rows.Contains(dataRow) && dt.Rows.Count != 0) // Giving error 
      continue; 
     dt.ImportRow(dataRow); 
     return dataRow; 
    } 
} 

, 내 dataTable 또한 처음으로/null이 비어있을 수 있습니다.

테이블에 기본 키가 없습니다 :로

그러나 그 기부 오류입니다.

아무도 도와 줄 수 없습니까? 추가 코드가 필요한 경우 댓글을 달기 만하면됩니다.

+0

과 같아야하는 [기본 키] (http://msdn.microsoft.com/en-을했다 가정 us/library/aa933092 (v = sql.80) .aspx) (데이터베이스 자체에서)? 그것은 것 같지 않습니다 ... –

+0

네, 확실히 데이터베이스에 기본 키가 있습니까 – Sandy

+0

당신은 'dataTable.PrimaryKey' 속성을 어떻게 얻습니까? –

답변

1

DataTable 개체에 PK를 추가 할 수 없습니까?

내가 코드 이런 식으로 뭔가있을 거라고 생각 :

dataTable.PrimaryKey = new DataColumn[] { dataTable.Columns["Id"] }; 
나는 당신의 dt 변수가 당신을 알리는 오류가 발생하는 경우 그 테이블 아무튼, 당신의 dataTable 변수가 될 것으로 예상되는 가정
+0

Table과 동일한 오류가 발생해도 기본 키가 없습니다. 그리고 테이블이 처음 비어 있다는 것을 기억하십시오 – Sandy

+0

편집 게시물보기 ......... – Sandy

0
DataTable dataTable = GetTable(); 
if (dataTable.Rows.Count > 1) 
{ 
    for (int i = 0; i < dataTable.Rows.Count; i++) 
    { 
     var dataRow = dataTable.Rows[i]; 

     if (dt.Rows.Contains(dataRow) && dt.Rows.Count != 0) // Giving error 
      continue; 
     dt.ImportRow(dataRow); 
     return dataRow; 
    } 
} 

틀린 변수를 사용하고 있기 때문에 사용할 수있는 기본 키가 없으며 사용하려고하는 변수와 연관된 기본 키나 테이블이 실제로 존재하지 않습니다.

그래서 코드가 테이블이 데이터베이스에서 읽을 사용합니까이 대신

DataTable dataTable = GetTable(); 
if (dataTable.Rows.Count > 1) 
{ 
    for (int i = 0; i < dataTable.Rows.Count; i++) 
    { 
     var dataRow = dataTable.Rows[i]; 

     if (dataTable.Rows.Contains(dataRow) && dataTable.Rows.Count != 0) // Giving error 
      continue; 
     dataTable.ImportRow(dataRow); 
     return dataRow; 
    } 
} 
관련 문제