2009-08-26 8 views
4

В моем приложении VB.net я заполняю свой объект клиента и просматриваю его, как показано ниже.Петля через общий список в vb.net

Поскольку есть тысячи клиентов, я хочу сделать это по 500 клиентов одновременно.

Есть в любом случае я могу иметь еще один цикл для обработки 500 клиентов на один выстрел в VB.NET

Я не использую Linq, как база данных Oracle.

есть что-нибудь подобное

Благодаря

Dim customerList as new List(of customer) 
Dim Customer as new Customer 

Try 
CustomerList=dataAccess.GetAllCustomers() 

if not CustomerList is nothing then 

    For each Customer in CustomerList 
     BuildXML(custmer.Name,Customer.age,Customer.city) 
    next 
     ProcessXMLWS(strxml) 
end if 

Catch ex as exception 
    LogError(ex.message) 
End try 
+0

Вы имеете в виду что-то вроде подкачки? –

+0

Если все, что вы делаете, обрабатывает одну строку за раз, какую цель обслуживают, делая это в 500 рядах строк? Конечно, было бы проще просто делать все строки в одном цикле. –

ответ

5

Вы можете перебрать блоки 500 Customer объектов, как это:

For i As Integer = 0 To CustomerList.Count Step 500 
    'Do things 
Next 

Однако, это не будет вам никакой пользы. Ваш код использует каждый объект Customer отдельно, так что вы ничего не можете сделать с 500 за раз.

EDIT:

Если вы имеете в виду, что вы хотите обрабатывать только первые 500 Customer объектов, попробуйте следующее:

For i As Integer = 0 To Math.Min(500, CustomerList.Count) 
    Set Customer = CustomerList(i) 

    BuildXML(custmer.Name, Customer.age, Customer.city) 
Next 

Как и в сторону, вы не должны писать Dim Customer As New Customer - добавив ключевое слово New, вы создаете дополнительный экземпляр Customer, который вы никогда не используете. Вместо этого напишите Dim Customer As Customer, чтобы объявить переменную без создания нового экземпляра Customer.

Кроме того, вы можете использовать ключевое слово IsNot VB в заявлении Если, как это:

If CustomerList IsNot Nothing Then 
3

Используйте переменную счетчика.

Dim counter as Integer = 1 
For each Customer in CustomerList 
    If counter = 500 Then 
     ProcessXMLWS(strxml) 
     strxml="" '//Empty if any.' 
     counter = 1 
    Next 
    BuildXML(custmer.Name, Customer.age, Customer.city) 
    counter += 1 
next 

http://msdn.microsoft.com/en-us/library/5ebk1751.aspx

+0

Спасибо adatapost. Я не хочу выходить сразу после 500. Я хочу продолжить за каждые 500 записей – acadia

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