2012-07-03 2 views
0

내가 적용 할 데이터 테이블이 입니다. Select() 메서드입니다. 그 후 결과를 String 배열로 가져 오려고합니다. 다음 코드를 시도했지만 작동하지 않습니다. 정확한 해결책을 알려주십시오.데이터 배열을 문자열 배열로 설정하는 방법은 무엇입니까?

DataTable dtget = HttpContext.Current.Cache["Hello"] as DataTable; 
    string sqlFilter = "Securityid = '" + CommonClass.Encryptdata(txtSecurity.Text) + "'"; 
    DataRow[] dr = dtget.Select(sqlFilter); 
    if (dr.Length > 0) 
    { 
     String[] Con; 
     for (int i = 0; i <= dr.Length; i++) 
     { 
      dr[i] = dr[i].ToString(); 

     } 
    } 
+0

당신은 두 개의'for' 블록이 필요합니다 : 외부 셀은'Select()'메쏘드에 의해 리턴 된 행의 수에 달하고, 내부는 데이터 테이블의 컬럼의 수만큼 순환합니다. 게다가, 당신은 이진 배열을 초기화해야합니다 :'String [] Con = new String [dr.length, dtget.Columns.count];'. –

답변

0

당신은 List<T>을 만들어야합니다. 이 같은

뭔가 :

List<String[]> list=new List<String[]>(); 

    if (dr.Length > 0) 
    { 
     for (int i = 0; i < dr.Length; i++) 
     { 
      string []ar=new string[dtget.Columns.Count]; 
      for(int j=0;j<dtget.Columns.Count;j++) 
      { 
       ar[j]=dr[i][j].ToString(); 
      } 
      list.Add(ar); 
     } 
    } 
+0

throwing error "암시 적으로 'string'유형을 'System.Data.DataRow'로 변환 할 수 없습니다."dr [i] = dr [i] .ToString(); "에서" – Ram

+0

Con [i] = dr [i] .ToString(); 대신에'dr [i] = dr [i] .ToString(); –

0

당신은 배열을 선언하지만, 그것을 인스턴스화하지했습니다. 실제 배열에 아무 것도 쓰지 않으면 데이터 테이블에 곧바로 쓸 수 있습니다.

String[] Con= new String[dtget.Columns.Count]; 
for (int i = 0; i <= dr.Length; i++) 
{ 
    Con[i] = dr[i].ToString(); 
} 
0

문제는 문자열 배열 대신 데이터 값에 값을 할당한다는 것입니다. dr.Length 같은 것은 없다는 것을

Con = new String[dr.Table.Columns.Count]; 

통지, 당신은 확인해야합니다 :

dr[i] = dr[i].ToString(); 

또한

con[i] = dr[i].ToString(); 

당신이 콘의 새로운 문을 누락

에 변경 열 수 :

dr.Table.Columns.Count 

마지막으로 IF 외부에서 사용할 수 있도록 문자열 배열 정의를 위로 이동해야합니다.

0

필요에 따라 Datarow의 ItemArray 속성을 사용할 수 있습니다. 문자열 배열 대신 객체 배열이지만 값을 사용하기 전에 "ToString()"을 수행하면 모든 설정이 완료됩니다.

string a = dr.ItemArray[i].ToString(); 
관련 문제