Обновить один объект на основе результатов другого запроса LINQ-to-Entities

#asp.net #vb.net #entity-framework #entity-framework-4 #linq-to-entities

#asp.net #vb.net #entity-framework #entity-framework-4 #linq-to-entities

Вопрос:

У меня есть следующий запрос LINQ-to-Entities:

 ' Get all the residency assignments that match the term/year.
        Dim assignments = From p In dbContext.Residents _
                          Where p.semester = term _
                          Where p.year = year _
                          Select p
  

Это даст мне все назначения резидентов на текущий год / семестр. Тогда у меня есть этот запрос LINQ-to-Entities:

  Dim reset_occupancy = From p In dbContext.Rooms _
                              Select p
  

Это даст мне все комнаты. Я хочу выполнить итерацию по назначениям и на основе того, какая комната назначена, обновить заполняемость в reset_occupancy. Я не уверен на 100%, как это сделать. Вот мой псевдокод того, чего я хочу достичь:

 For each row in assignments
   reset_occupancy.Where(reset_occupancy.room=assignment.occupancy).current_occupancy = 1
Next 
  

Ответ №1:

Если у кого-то есть ответ получше, он мне все равно понравится … но для всех, кто еще пытается выполнить аналогичный процесс, вот как я это решил:

         ' Now, retabulate current occupancy.
        For Each row In assignments
            Dim assignment As Integer = row.room
            Dim update_occupancy = (From p In dbContext.Rooms _
                                   Where p.id = assignment _
                                   Select p).FirstOrDefault

            update_occupancy.current_occupancy = update_occupancy.current_occupancy   1
        Next
        dbContext.SaveChanges()