0

私は私がViewBag経由でビューに渡すドロップダウンリストを持っている:EF関連データのドロップダウンリスト

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

これは明らかに正常に動作しますが、私はもう少し複雑な何かをしたい、とに苦労しています始める場所を見つけてください。

最終的には、まだ割り当てられていないルームタイプ(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"); 

が、私はint型のリストに変換する必要があると思いますか?

おかげで、ギャビン

答えて

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

私の悪い@ Gavin5511私は2つの選択肢で私の答えを更新しました –

+0

オプション1はコンパイルされていないようです。エラーは「メソッドのオーバーロードがありません」「どこで3つの引数を取るか」 – Gavin5511

関連する問題