2010-11-18 272 views
1

我有一個數據集,我試圖將數據集的所有ID都放入一個數據行,最後將其保存在一個int數組中。它不適合我。它說,提前"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"]); 

謝謝..

+0

Convert.ToInt32返回它們的單個int不是一個數組:http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx – 2010-11-18 15:34:44

+0

是你試圖得到一個單一的ID(作爲一個單一的整型)或獲得所有ID。你的代碼是部分單一的,部分多的。 – 2010-11-18 16:02:15

回答

7

你必須創建一個新的int數組,並把INT在那裏。

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

我認爲這將速記工作太:

int[] SampleID = new int[]{Convert.ToInt32(dr["Id"])}; 
+0

你打敗了我,並且完全相同,所以+1對你 – jcolebrand 2010-11-18 15:35:47

+0

我看不出爲什麼這實際上是一件有用的事情,說實話。爲什麼要創建一個單元素數組而不僅僅是將單個值保存在自己的變量中?這不像數組可以稍後擴展... – 2010-11-18 17:49:54

1

這是因爲它是一個數組!試試:

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

好的。看這句話:

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

的右手邊是一個int(的Convert.ToInt32結果),但你試圖將其轉換成陣列

如果你想所有的ID,我建議你創建一個List<int>和遍歷行,呼籲list.Add(Convert.ToInt32(dr["Id"])每一行,然後調用ToArray()在最後,如果你真的需要。

另外,使用LINQ - 類似:

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

你剛開出一個ID,我想你可能已經通過走出所有的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();