2009-08-26 13 views
4

Dans mon application VB.net, je remplis mon objet client et je le boucle comme indiqué ci-dessous.Boucle via la liste générique dans vb.net

Comme il y a des milliers de clients, je veux le faire 500 clients à la fois.

est-il de toute façon je peux avoir un plus pour la boucle pour traiter 500 clients d'un seul coup dans vB.net

Je ne suis pas LINQ comme la base de données Oracle est.

est là quelque chose comme

Merci

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

Vous voulez dire quelque chose comme la pagination? –

+0

Si tout ce que vous faites est de traiter une ligne à la fois, à quoi sert-il de le faire en morceaux de 500 lignes? Il serait sûrement plus facile de faire toutes les lignes dans une seule boucle. –

Répondre

5

Vous pouvez parcourir des blocs de 500 objets Customer comme celui-ci:

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

Cependant, il ne sera pas vous faire du bien. Votre code utilise individuellement chaque objet Customer, donc vous ne pouvez rien faire avec 500 à la fois.

EDIT:

Si vous voulez dire que vous ne souhaitez que pour traiter les 500 premiers Customer objets, essayez ceci:

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

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

En aparté, vous ne devriez pas écrire Dim Customer As New Customer - en ajoutant le mot-clé New, vous créez une instance supplémentaire Customer que vous n'utilisez jamais. Au lieu de cela, écrivez Dim Customer As Customer pour déclarer la variable sans créer une nouvelle instance Customer.

Vous pouvez également utiliser mot-clé de VB IsNot dans l'instruction Si, comme ceci:

If CustomerList IsNot Nothing Then 
3

utilisation variable compteur.

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

Merci adatapost. Je ne veux pas quitter juste après 500. Je veux continuer pour chaque 500 enregistrements – acadia