メインの VendorProfile テーブルと、ステータス コードと日付スタンプを含む 1 対多の VendorHistory テーブルがあります。以下のクエリは、各ベンダーの最新のステータス (ステータス コードと日付) のみを取得するために機能します。ただし、私がやりたいことは、ステータス コードを StatusCodes ルックアップ テーブルにあるステータス名に変換することです。
public IEnumerable<BrowseStatusModel> BrowseByStatus()
{
IQueryable<BrowseStatusModel> viewModel = _db.VendorProfiles
.Include("VendorStatusHistory")
.Include("StatusCodes")
.Select(s => new BrowseStatusModel
{
ProfileID = s.ProfileID,
Name = s.Name,
CompanyName = s.CompanyName,
DateCreated = s.DateCreated,
Status = s.VendorStatusHistories.OrderByDescending(o => o.DateCreated).FirstOrDefault().Status,
StatusDate = s.VendorStatusHistories.OrderByDescending(o => o.DateCreated).FirstOrDefault().DateCreated,
StatusName = ???
})
.OrderBy(x => x.ProfileID);
return viewModel;
}
おまけのフォローアップとして、VendorHistory テーブルに一致する行があるベンダーのみを返すように上記のクエリを変更して、履歴レコードを持たないレコードを除外する方法を知りたいです。