While 循环中的问题:只将一个事物添加到列表中一次

Problems in the While Loop: Adding a thing to the list only once

我想预订餐厅。只要客人在酒店,客人就应该在早上、中午和晚上吃饭。为此,我有一个 booking_of_restaurant class。在进行酒店预订的表格中,随后还预订了有关期间的餐厅。 我的代码仍然预订太多——吃一顿早餐、一顿午餐和一顿晚餐就足够了。我想不出怎么解决。

开始日期和结束日期都在带有时间的文本框中给出。因此时间不是默认的12A.M.

Restaurant_reservations As New List(Of booking_of_restaurant)

Private Sub Button_addGuest_Click(sender As Object, e As EventArgs) Handles Button_addGuest.Click
       

        Dim currentDate As Date = Start_date
        

        While currentDate < End_date
            If currentDate.Hour >= 7 AndAlso currentDate.Hour < 11 Then
                Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
                                                                      booking_of_restaurant.kind_of_meals.breakfast,
                                                                      characteristic))

            ElseIf currentDate.Hour > 11 AndAlso currentDate.Hour < 14 Then
                Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
                                                                      booking_of_restaurant.kind_of_meals.lunch,
                                                                      characteristic))
            ElseIf currentDate.Hour >= 18 AndAlso currentDate.Hour < 22 Then
                Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
                                                                      booking_of_restaurant.kind_of_meals.dinner,
                                                                      characteristic))
            End If
            currentDate = currentDate.AddHours(1)
        End While
 End Sub

我试过了,但是错误是

"booking_of_restaurant.kind_of_meals" is an enumeration type and cannot be used as an expression.

If Not Restaurant_reservations.Last().kind_of_meals = booking_of_restaurant.kind_of_meals.breakfast Then
            End If

您的步长为 1 小时,因此循环进入例如第一个块十次(在 1:00、2:00、3:00、...) .所以可能最简单的方法是,在预订完成后进入范围的上限

Private Sub Button_addGuest_Click(sender As Object, e As EventArgs) Handles Button_addGuest.Click
  Dim currentDate As Date = Start_date
  Dim addHours as Integer = 1
  While currentDate < End_date
    If currentDate.Hour > 0 AndAlso currentDate.Hour < 11 Then
      Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
        booking_of_restaurant.kind_of_meals.breakfast,
        characteristic))
      addHours = 11 - currentDate.Hour

    ElseIf currentDate.Hour > 11 AndAlso currentDate.Hour < 14 Then
      Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
        booking_of_restaurant.kind_of_meals.lunch,
        characteristic))
      addHours = 14 - currentDate.Hour

    ElseIf currentDate.Hour >= 18 AndAlso currentDate.Hour < 22 Then
      Restaurant_reservations.Add(New booking_of_restaurant(currentDate,
        booking_of_restaurant.kind_of_meals.dinner,
        characteristic))
      addHours = 22 - currentDate.Hour

    End If

    currentDate = currentDate.AddHours(addHours)
  End While
End Sub