展示シナリオがあります。
出展者ビューに表示されるドロップダウンリストから、以下の利用可能なスタンドのリストを除外するにはどうすればよいですか?
Sqlで私は:
Select StandID, Description from Stand
Where StandID not in (Select StandID from Exhibitor)
出展者は登録 - 以下のモデルに従って、ドロップダウン リスト (StandID/Stand) から必要なスタンドを選択します。
public class Exhibitor
{
public int ExhibitorID { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public int StandID { get; set; }
public virtual Stand Stand { get; set; }
}
スタンドモデルは次のとおりです。
public class Stand
{
public int StandID { get; set; }
public string Description { get; set; }
public bool Booked { get; set; }
}
次のようにスタンドのリストを取得できます。
var stands = db.Stands.ToList().Where(s => s.Booked==false)
.Select(s => new SelectListItem
{
Value = s.StandID.ToString(),
Text = s.StandNumber + ": " + s.Description + ": " + s.Size + ": £" + s.Rate.ToString()
});
しかし、スタンドリストから (出展者からスタンドIDを選択) を除外するにはどうすればよいですか?
私は試した:
var booked = db.Exhibitors.Select(s => new { s.StandID }).ToList();
次に使用:
var stands = db.Stands.ToList().Where(s => s.Booked==false)
.Except(booked)
.Select(s => new SelectListItem
{
Value = s.StandID.ToString(),
Text = s.StandNumber + ": " + s.Description + ": " + s.Size + ": £" + s.Rate.ToString()
});
しかし、それはうまくいきませんでした。
アップデート
これはうまくいくように見えますが、私は専門家ではないので、それがベストプラクティスの方法であるかどうかについてアドバイスをいただければ幸いです。
var stands = db.Stands.ToList().Where(s => !db.Exhibitors
.Any(bk => bk.StandID == s.StandID) && s.Booked == false)
.Select(s => new SelectListItem
{
Value = s.StandID.ToString(),
Text = s.StandNumber + ": " + s.Description + ": " + s.Size + ": £" + s.Rate.ToString()
});
助けてくれてありがとう?
マーク