2010-11-18 6 views
1

나는 데이터 집합이 있고 마지막으로 int 배열에 저장하려면 datrow 데이터 집합의 모든 ID를 얻으려고합니다. 그게 나를 위해 작동하지 않습니다. 그것은 사전에 "Cannot implicitly convert from type int to int[]"변환 int int []

Dataset ds = new BusinessLogic().Getsamples(MerchantID); 

Datarow dr = ds.Tables[0].Rows[0]; 

int[] SampleID = Convert.ToInt32(dr["Id"]); 

감사합니다 .. 당신은 새로운 INT 배열을 만들고 거기에 지능 넣어야 할

+0

Convert.ToInt32 그들 중 단일의 int없는 배열을 반환합니다 : http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx –

+0

있습니까

은 아마 당신은 무엇인가를 원한다 하나의 ID (단일 int로 캐스트)를 얻거나 ALL ID를 얻으려고합니다. 당신은 코드가 부분 단일, 부분 다중입니다. –

답변

7

을 말한다.

int sampleID = new int[1]; 
sampleID[0] = Convert.ToInt32(dr["Id"]); 

나는이 속기도 작동합니다 생각 :

가 배열이기 때문이다
int[] SampleID = new int[]{Convert.ToInt32(dr["Id"])}; 
+0

당신은 저를 이기고 동일하므로 +1 당신에게 – jcolebrand

+0

이것이 실제로 실제로 할 유용한 일인 이유를 알 수 없습니다. 단일 변수를 자체 변수에 보관하는 대신 단일 요소 배열을 만드는 이유는 무엇입니까? 나중에 배열을 확장 할 수있는 것과는 다릅니다 ... –

1

! 시도 :

int[] SampleID = new int[] {(int)dr["Id"]); 
7

그래요. 이 라인 봐 :

int[] SampleID = Convert.ToInt32(dr["Id"]); 

오른쪽 편은 int (Convert.ToInt32의 결과)하지만 당신은 배열에 그 변환을 시도하고 있습니다.

당신이 모든 ID를 원하는 경우에, 나는 당신이 정말 필요하다면 마지막에 ToArray()를 호출 한 후 각 행에 대한 list.Add(Convert.ToInt32(dr["Id"])과를 호출하는 List<int>을 만들고 행을 반복하는 것이 좋습니다.

다른 방법으로는, LINQ를 사용 - 무엇인가 : 당신은 단지 하나 개의 ID를 얻고

int[] ids = ds.Tables[0].AsEnumerable() 
         .Select(dr => dr.Field<int>("Id")) 
         .ToArray(); 
4

, 나는 당신이 모든 ID를 빼내 모든 행을 통해 루프에 의미가 있다고 생각?

List<int> ids = new List<int>(); 
foreach(Datarow dr in ds.Tables[0].Rows) 
{ 
    ids.Add(Convert.ToInt32(dr["Id"])); 
} 
int[] SampleID = ids.ToArray(); 
관련 문제