Я - цикличное выполнение через массив строк, такой как (12.01.1992 грузовик яблока 10.12.10 оранжевый велосипед). Длина массива всегда будет делимой 3. Я должен циклично выполниться через массив и захватить первые 3 объекта (я собираюсь вставить их в DB), и затем захватите следующие 3 и т. д. и т. п., пока все они не прошлись.
//iterate the array
for (int i = 0; i < theData.Length; i++)
{
//grab 3 items at a time and do db insert, continue until all items are gone. 'theData' will always be divisible by 3.
}
Просто увеличивайте i
на 3 на каждом шаге:
Debug.Assert((theData.Length % 3) == 0); // 'theData' will always be divisible by 3
for (int i = 0; i < theData.Length; i += 3)
{
//grab 3 items at a time and do db insert,
// continue until all items are gone..
string item1 = theData[i+0];
string item2 = theData[i+1];
string item3 = theData[i+2];
// use the items
}
Чтобы ответить на некоторые комментарии, предполагается, что theData.Length
кратно 3, поэтому нет необходимости чтобы проверить theData.Length-2
как верхнюю границу. Это только замаскирует ошибки в предварительных условиях.
Это должно сработать:
//iterate the array
for (int i = 0; i < theData.Length; i+=3)
{
//grab 3 items at a time and do db insert, continue until all items are gone. 'theData' will always be divisible by 3.
var a = theData[i];
var b = theData[i + 1];
var c = theData[i + 2];
}
Мне один раз отказали в этом ответе. Я почти уверен, что это связано с использованием theData.Length для верхней границы. Код как есть работает нормально, потому что массив гарантированно кратен трем, как указано в вопросе. Если бы этой гарантии не было, вам нужно было бы вместо этого проверить верхнюю границу с помощью theData.Length - 2.
i ++
- стандартное использование цикла, но не единственный способ. Попробуйте увеличивать каждый раз на 3:
for (int i = 0; i < theData.Length - 2; i+=3)
{
// use theData[i], theData[i+1], theData[i+2]
}
Не слишком сложно. Просто увеличьте счетчик цикла for
на 3 единицы на каждой итерации, а затем сместите индексатор, чтобы получить пакет из 3 штук за раз:
for(int i=0; i < theData.Length; i+=3)
{
var item1 = theData[i];
var item2 = theData[i+1];
var item3 = theData[i+2];
}
Если длина массива не гарантированно была кратной из трех, вам нужно будет проверить верхнюю границу с помощью theData.Length - 2
.
Циклу for не нужно просто добавлять его. Вы можете зацикливаться на трех.
for(int i = 0; i < theData.Length; i+=3)
{
string value1 = theData[i];
string value2 = theData[i+1];
string value3 = theData[i+2];
}
По сути, вы просто используете индексы для захвата значений в вашем массиве. Здесь следует отметить один момент: я не проверяю, пройдете ли вы за конец своего массива. Убедитесь, что вы проверяете границы!