2012-03-12 4 views
0

Во-первых, это не проблема, а скорее как викторина. У меня есть 3 массива, которые я буду загружать данные из набора данных, в будущем этот набор данных может расширяться и код будет слишком длинным, как я могу загрузить данные, как показано ниже, используя циклы без использования дополнительного массива?Загрузка массива с использованием петель

Dim ds as dataset = objDashBoardStats.DashBoard_TotalSales_Static_Get(objDashBoardStats) 

       Dim statvals(11) As Integer 
       statvals = LoadData(statvals, ds.Tables(0)) 

       Dim statvalsMen(3), statvalsWomen(3), statvalsUnknown(3) As Integer 

       statvalsMen(0) = statvals(0) 
       statvalsWomen(0) = statvals(1) 
       statvalsUnknown(0) = statvals(2) 
       statvalsMen(1) = statvals(3) 
       statvalsWomen(1) = statvals(4) 
       statvalsUnknown(1) = statvals(5) 
       statvalsMen(2) = statvals(6) 
       statvalsWomen(2) = statvals(7) 
       statvalsUnknown(2) = statvals(8) 
       statvalsMen(3) = statvals(9) 
       statvalsWomen(3) = statvals(10) 
       statvalsUnknown(3) = statvals(11) 

ответ

0

Я не знаю, VB явно, но он должен быть похож на это:

int max = statvals.size; //just get the amount of indexes in statvals. max%3 should be 0 
for(int i=0; i<max; i+=3) 
{ 
    statvalsMen(i/3) = statvals(i); 
    statvalsWomen(i/3) = statvals(i+1); 
    statvalsUnknown(i/3) = statvals(i+2); 
} 
+0

Исправить с помощью 'statvalsMen (i/3)', чтобы он увеличивался на каждой третьей итерации. – ja72

+0

Спасибо, забыли об этом. Я также сделал бы это слово (i/3), но я не уверен, что C имеет это (я человек Java/C#) –

0

Петля из Dataset вместо того, чтобы использовать другой массив (предполагается, что будет равное количество записей в таблице для мужчин, женщин и неизвестных, как указывает вопрос) ...

Dim intTotalPerCategory As Integer = ds.Tables(0).Rows.Count/3 

    Dim statvalsMen(intTotalPerCategory), statvalsWomen(intTotalPerCategory), _ 
     statvalsUnknown(intTotalPerCategory) As Integer 

    For i = 0 To (ds.Tables(0).Rows.Count - 1) Step 3 

     'Change "NameOfColumn" to the correct column name or ordinal number. 
     statvalsMen(i) = CInt(ds.Tables(0).Rows(i).Item("NameOfColumn")) 
     statvalsWomen(i + 1) = CInt(ds.Tables(0).Rows(i).Item("NameOfColumn")) 
     statvalsUnknown(i + 2) = CInt(ds.Tables(0).Rows(i).Item("NameOfColumn")) 

    Next 
+0

На ваш вопрос задано решение, которое не использует другой массив. Это решение будет работать до тех пор, пока LoadData не будет делать больше, чем просто загрузить поле из этой таблицы в наборе данных в массив ... если он выполняет дополнительную обработку для загрузки этого массива, тогда вам придется перебирать из массива (или изменить свой метод LoadData). – N0Alias

Смежные вопросы