2010-11-18 12 views
1

J'ai un ensemble de données et j'essaye d'obtenir tous les identifiants du datset dans un datarow pour finalement le sauver dans un tableau d'int. Ça ne fonctionne pas pour moi. Il dit "Cannot implicitly convert from type int to int[]"Convertir int en] [

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

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

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

Merci à l'avance ..

+0

Convert.ToInt32 retourne un int pas un tableau d'entre eux: http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx –

+0

Est-ce vous essayez d'obtenir un seul ID (cast en single int) ou obtenir TOUT ID. Votre code est partie unique, partie multi. –

Répondre

7

Vous devez créer un nouveau tableau int et mettre l'int là-dedans.

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

Je pense que ce raccourci fonctionnera aussi:

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

vous me battre et identique donc +1 à vous – jcolebrand

+0

Je ne vois pas pourquoi c'est en fait une chose utile à faire, pour être honnête. Pourquoi créer un tableau à un seul élément plutôt que de simplement conserver la valeur unique dans sa propre variable? Ce n'est pas comme si le tableau pouvait être étendu plus tard ... –

1

C'est parce qu'il est un tableau! Essayez:

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

Eh bien oui. Regardez cette ligne:

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

Le côté droit est un int (le résultat de Convert.ToInt32), mais vous essayez de convertir en un tableau .

Si vous voulez tous les ID, je vous suggère de créer un List<int> et itérer sur les lignes, appelant list.Add(Convert.ToInt32(dr["Id"]) pour chaque ligne, puis appelez ToArray() à la fin si vous avez vraiment besoin.

Vous pouvez également utiliser LINQ - quelque chose comme:

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

Vous êtes juste de sortir d'une identité, je pense que vous pourriez avoir signifié à boucle à travers toutes les lignes sortir tous les ID?

Peut-être que vous voulez quelque chose comme:

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