2012-07-23 3 views
0

에 존재하는 정수 ID가 목록 poulating :내가 정수 목록이 SQL DataTable을

List<int> AllowedLinks = new List<int>(); 

을 내가 integerIds .. 반복을 통해이 목록에 사람들을 얻으려고 노력 메신저하지만주는 오류를 포함하는 데이터 테이블이 :하지 올바른 형식으로 입력 문자열 ..

// GetDataTable은 데이터 테이블

내 코드를 반환하는 함수입니다 :

 DataObj = new DAL(); 
     DataTable dt 
    dt = DataObj.GetDataTable("GetAllowedLinksForUserRole",1); 
    foreach (DataRow myRow in dt.Rows) 
    { 
     AllowedLinks.Add(Convert.ToInt32((myRow).ToString())); 
    } 

나중에 조작을 위해 정수가 필요할 것이기 때문에 내 목록을 데이터 형식으로 사용하고 싶지 않습니다!

+0

을 통해 액세스 할 필요가 Convert.ToInt32((myRow).ToString())

같은 DataRow를 액세스 할 수 없습니다 열 이름. 예제 myRow [ "Column1"] – praveen

답변

1

귀하의 ID가있는 열의 색인을 생성해야합니다.
코드 개정 내에서 var x를 자리 표시 자로 사용합니다.
정수 값이 들어있는 데이터 테이블에서 열의 인덱스를 설정해야합니다. 더 나은
, 당신은 또한 그 이름

DataObj = new DAL(); 
DataTable dt 
int x = 0; // <= here 0 is the index of the column with the IDs 
int name = "ID"; // <= here ID is the name of the column with the IDs 
dt = DataObj.GetDataTable("GetAllowedLinksForUserRole",1); 
foreach (DataRow myRow in dt.Rows) 
{ 
    AllowedLinks.Add(Convert.ToInt32(myRow[x])); 
    // This is to use column name 
    // AllowedLinks.Add(Convert.ToInt32(myRow[name])); 
} 

주를 사용할 수 있습니다 위의 코드는 정수 열이 NULL 값을 포함하지 않는 것으로 가정합니다.
이 다음 시험 정수의 간략한

AllowedLinks.Add(Convert.ToInt32(myRow[x] == DBNull.Value ? 0 : myRow[x])); 
+0

작동 ... 감사합니다 u :) –

1

확인하는 열 값을 변환하기 전에 필요한 경우가 아니라면. myRow 행과 연관된 특성/색인이 있어야합니다. 직접 대신 사용 또한 코드를 디버깅 시도하고 myRow 점점 당신의 가치를 어떻게보고

Convert.ToInt32((myRow.propertyname).ToString()) 

또는 Convert.ToInt32((myRow[incrementedindex]).ToString())

+0

네, 맞아 .. 감사합니다 :) –