Для каждого цикла в vb.net

Скопированный от MSDN:

Во время компиляции, дословные строки преобразовываются в обычные строки со всем одинаковым escape-последовательности. Поэтому при просмотре дословной строки в окне часов отладчика Вы будете видеть символы ESC, которые были добавлены компилятором, не дословной версией от Вашего исходного кода. Например, дословная строка @"C:\files.txt" появится в окне часов как "C:\\files.txt".

9
задан Jason 25 August 2009 в 16:39
поделиться

8 ответов

Прежде всего, не создавайте Новый список клиентов, если вы просто собираетесь назначить другой список для ссылки в следующей строке. Это глупо. Сделайте это так:

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
9
ответ дан 4 December 2019 в 11:43
поделиться

Попробуйте следующее

For Each current In customers
  '' // Do something here 
  Console.WriteLine(current.Name)
Next
7
ответ дан 4 December 2019 в 11:43
поделиться

Примерно так: -

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 ().

1
ответ дан 4 December 2019 в 11:43
поделиться

'Это начнется с 500 и будет обрабатываться до конца ....

for start as integer = 500 to Customers.Count

'process customer....
customer = Customers(start)

Next

Чтобы перебрать весь список:

for each cust as Customer in Customers

Next 

Одно примечание .... VB нечувствителен к регистру, и в вашем примере кода используются строчные и прописные буквы клиентов

1
ответ дан 4 December 2019 в 11:43
поделиться
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) и т. Д., Но не всех клиентов. Вы это хотите?

0
ответ дан 4 December 2019 в 11:43
поделиться

Я не совсем уверен, что вы пытаетесь сделать, но, возможно, вы могли бы попробовать следующее:

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

Это ни в коем случае не элегантно, но имеет смысл и будет работать.

0
ответ дан 4 December 2019 в 11:43
поделиться

Разумеется, недостатка в разнообразии нет. Я не узнаю ваш тип объекта "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
0
ответ дан 4 December 2019 в 11:43
поделиться

Вы можете попробовать:

    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
0
ответ дан 4 December 2019 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: