2010-11-18 4 views
1

У меня есть набор данных, и я пытаюсь получить все идентификаторы datset в datarow, чтобы, наконец, сохранить его в массиве 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 –

+0

ли вы пытаетесь получить один ID (отлитый как один int) или получить ВСЕ ИД. Вы кодируете часть одиночную, часть multi. –

ответ

7

Вы должны создать новый целочисленный массив и положить Int там.

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), но вы пытаетесь преобразовать, что в массив.

Если вы хотите все идентификаторы, я предлагаю вам создать 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, я думаю, вы могли бы иметь в виду, чтобы перебрать все строки получать все идентификаторы?

Может быть, вы хотите что-то вроде:

List<int> ids = new List<int>(); 
foreach(Datarow dr in ds.Tables[0].Rows) 
{ 
    ids.Add(Convert.ToInt32(dr["Id"])); 
} 
int[] SampleID = ids.ToArray(); 
Смежные вопросы