2010-11-18 25 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"]); 

おかげ..あなたは、新しいint型の配列を作成し、そこにint型を配置する必要があり

+0

Convert.ToInt32は、それらの単一のintではない配列が返されます:http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx –

+0

です

はたぶん、あなたは何かのようにしたいですあなたは単一のIDを取得しようとしています(単一のintとしてキャスト)またはすべての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"]); 

右手側はintConvert.ToInt32の結果)であるが、あなたは配列にその変換しようとしています。

あなたがすべて IDをしたい場合、私はあなたがList<int>を作成し、行を反復処理する、行ごとのlist.Add(Convert.ToInt32(dr["Id"])を呼び出した後、あなたが本当にする必要がある場合最後にToArray()を呼び出す示唆しています。また

、LINQを使用する - のようなもの:あなたは1つの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();