0

У меня есть выпадающий список, который я пройти к виду через ViewBag:EF связанные выпадающий список данных

ViewBag.RoomTypeID = new SelectList(db.RoomType, "ID", "Type"); 

Это, очевидно, работает хорошо, но я хочу сделать что-то более сложное, и я с трудом найти, с чего начать.

В конечном счете, я хочу, чтобы раскрывающийся список отображал только те объекты RoomTypes, которые еще не были назначены (COUNT = 0) в отдельной таблице. Мои модели:

public class RoomType 
{ 
    [Key] 
    public int ID { get; set; } 

    [Display(Name = "Room Type")] 
    public string Type { get; set; } 

    public virtual ICollection<Room> Rooms { get; set; } 
} 

и ...

public class Room 
{ 
    [Key] 
    public Guid ID { get; set; } 

    [Required] 
    public int PropertyID { get; set; } 

    [Required] 
    public int RoomTypeID { get; set; } 

    //other properties removed for brevity 

    public virtual RoomType RoomType { get; set; } 

    public virtual Property Property { get; set; } 
} 

Предполагая, что моя собственность ID 100, я только хочу, чтобы показать типы номеров в списке, где есть не комната с PropertyID 100 с тем же номером.

Что я пытался сделать это:

ViewBag.RoomTypeID = new SelectList(db.RoomType.Where(r => r.ID = (db.Rooms.Where(r => r.PropertyID == 1))) , "ID", "Type"); 

Но я думаю, что мне нужно преобразовать в список ИНТ-х годов?

Спасибо, Гэвин

ответ

1

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

var propertyIdNotWanted = 100; 
ViewBag.RoomTypeID = new SelectList(db.RoomType.Where(r => r.Rooms.All(room => room.PropertyID != propertyIdNotWanted)) , "ID", "Type"); 

Или вы могли бы смотреть через Rooom как это:

db.Room.Where(r => r.PropertyID != propertyIdNotWanted).Select(r => r.RoomType) 
+0

Но объект roomType не содержит PropertyID? После некоторого дополнительного чтения это похоже. Любой может дать мне то, что мне нужно – Gavin5511

+0

My bad @ Gavin5511 Я обновил свой ответ с помощью 2 вариантов –

+0

Вариант 1, похоже, не компилируется. Ошибка: «Нет перегрузки для метода« Где »принимает 3 аргумента? – Gavin5511

Смежные вопросы