在vb.net中循环遍历通用列表

时间:2009-08-26 01:20:48

标签: vb.net

在我的VB.net应用程序中,我正在填充客户对象并循环遍历它,如下所示。

由于有数以千计的客户,我希望一次做500个客户。

无论如何,我还可以再使用一个For循环来在vB.net中一次性处理500个客户

我没有使用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

2 个答案:

答案 0 :(得分:6)

你可以循环遍历500个Customer个对象的块:

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

然而,它对你没有任何好处。 您的代码分别使用每个Customer对象,因此您一次只能使用500个。

修改

如果您的意思是只想处理前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实例。

此外,您可以在If语句中使用VB的IsNot关键字,如下所示:

If CustomerList IsNot Nothing Then

答案 1 :(得分: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