Скопированный от MSDN:
Во время компиляции, дословные строки преобразовываются в обычные строки со всем одинаковым escape-последовательности. Поэтому при просмотре дословной строки в окне часов отладчика Вы будете видеть символы ESC, которые были добавлены компилятором, не дословной версией от Вашего исходного кода. Например, дословная строка
@"C:\files.txt"
появится в окне часов как"C:\\files.txt"
.
Прежде всего, не создавайте Новый
список клиентов, если вы просто собираетесь назначить другой список для ссылки в следующей строке. Это глупо. Сделайте это так:
Dim customers As List(Of Customer) = dataAccess.GetCustomers()
Затем для цикла вам понадобится простой цикл «For», а не для каждого. Не забудьте остановиться перед концом списка:
For i As Integer = 500 To Customers.Count -1
'do something with Customers(i) here
Next i
Если вы используете Visual Studio 2008, вы также можете написать это так:
For each item As Customer in Customers.Skip(500)
'Do something with "item" here
Next
Попробуйте следующее
For Each current In customers
'' // Do something here
Console.WriteLine(current.Name)
Next
Примерно так: -
Dim customers as New List(Of Customer)
Customers=dataAcess.GetCustomers()
For Each customer AS Customer in Customers
'' // do something with the customer object
Next
Редактировать
Похоже, вы хотите выбрать 500 из N элементов или, возможно, следующие 500. Вы можете использовать методы расширения LINQ .
и / или . Для этого пропустите
. Затем используйте ToList, чтобы создать свой список. Например: -
Dim customers as List(Of Customer)
customers = dataAccess.GetCustomers().Skip(500).Take(500).ToList()
Если вы хотите выполнить перечисление только через клиентов, вы можете обойтись без ToList ().
'Это начнется с 500 и будет обрабатываться до конца ....
for start as integer = 500 to Customers.Count
'process customer....
customer = Customers(start)
Next
Чтобы перебрать весь список:
for each cust as Customer in Customers
Next
Одно примечание .... VB нечувствителен к регистру, и в вашем примере кода используются строчные и прописные буквы клиентов
Dim start as Integer
Dim customers as New List(Of Customers)
Customers = dataAcess.GetCustomers()
For i as Integer = start to Customers.count Step 500
Debug.Print Customers(i).someProperty
Do something here
Next i
Я думаю, вам нужно использовать индекс клиента и шаг за 500 секунд. Это будет обрабатывать только клиентов (начало), клиентов (начало + 500), клиентов (начало + 1000) и т. Д., Но не всех клиентов. Вы это хотите?
Я не совсем уверен, что вы пытаетесь сделать, но, возможно, вы могли бы попробовать следующее:
Dim count As Integer = 0
Const MAX_CUSTOMERS As Integer = 500
Dim customers As List(Of Customers) = dataAcess.GetCustomers()
For Each c As Customer In customers
'do stuff here'
c.Name = "Billy"
count+=1
If count = MAX_CUSTOMERS Then Exit For
Next
Это ни в коем случае не элегантно, но имеет смысл и будет работать.
Разумеется, недостатка в разнообразии нет. Я не узнаю ваш тип объекта "DataAcess", но если вы можете вставить эту таблицу как набор записей (т.е. таблицу SQL), попробуйте это. (Не забудьте вернуть набор записей, когда закончите)
Option Explicit
Dim Customers As Recordset
Set Customers=currentdb.openrecordset("???")
While Customers.EOF=False
'do stuff here using the recordset object
'i.e. Customers.Fields("Name")="Billy"
Customers.MoveNext
Wend
Вы можете попробовать:
For i As Integer = 500 To (customers.Count -1)
''do something
Next
или
For i As Integer = 0 To (customers.Count - 1) step 500
''do something
Next