2011-04-27 6 views
4

데이터 테이블 dt (광고주 포함)가 있고 dt에서 advertiserID가 값과 같은 행을 제거하고 싶습니다. 어떻게해야합니까?데이터 테이블에서 데이터row를 삭제합니다

DataTable dt = new DataTable(); 
//populate the table 
dt = DynamicCache.GetAdvertisers(); 

//I can select a datarow like this: 
DataRow[] advRow = dt.Select("advertiserID = " + AdvID); 

//how do you remove it, this get's me an error 
dt.Rows.Remove(advRow) 

어떻게 제대로 할 수 있습니까?

감사합니다.

+0

을 즉 더 필요합니다 ...

과 배열을 확인하거나 선택 후 배열을 반복하는 것이 좋습니다 것입니다. 어떤 오류입니까? 그것은 무엇을 말하는가? –

답변

8

advRow는 ARRAY입니다. 배열에서 삭제할 행을 식별해야합니다. 물론

dt.Rows.Remove(advRow[0]); 

, 이것은 단지 그 뒤에 데이터 테이블, 반드시 데이터 소스에서 제거 (SQL, XML, ...). 당신은 당신에게 오류를 얻을라고 ...

var datatable = new DataTable(); 
      DataRow[] advRow = datatable.Select("id=1"); 
      datatable.Rows.Remove(advRow[0]); 
      //of course if there is nothing in your array this will get you an error.. 

      foreach (DataRow dr in advRow) 
      { 
       // this is not a good way either, removing an 
       //item while iterating through the collection 
       //can cause problems. 
      } 

      //the best way is: 
      for (int i = advRow.Length - 1; i >= 0; i--) 
      { 
       datatable.Rows.Remove(advRow[i]); 
      } 
      //then with a dataset you need to accept changes 
      //(depending on your update strategy..) 
      datatable.AcceptChanges(); 
+0

아, 정확히 내가 누락 한 정보였습니다. 정말 고마워요. dt.acceptchanges를해야합니까? – flavour404

+0

@ flavour404, 업데이트 전략에 따라 예 ... 어떤 시점에서'.AcceptChanges();'를 할 필요가 있습니다 (추가 한 확장 샘플을보십시오 ...) –

+0

고마워요, 그건 굉장한 조언이었습니다. – flavour404

관련 문제