在我的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
答案 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