我有這樣的關係,在我的數據庫:一個在許多(IQueryable的)許多和搜索(LINQ)
Order => historyStatus => Status
Order
包含HistoryStatus
列表,並HistoryStatus
包含一個Status
。
我的使用情況是:搜索所有Order
具有確定Status
,並獲得最新HistoryStatus
(根據日期)
我怎樣才能做到這在LINQ to實體和IQueryable
?
這裏是實體:
public class Order
{
public int ID { get; set; }
public virtual ICollection<HistoryStatusOrder> HistoriesStatusOrder { get; set; }
}
public class HistoryStatusOrder
{
public int ID { get; set; }
public DateTime Date { get; set; }
public string StatusOrderCode { get;
public int OrderId { get; set; }
public virtual StatusOrder StatusOrder { get; set; }
public virtual Order Order { get; set; }
}
public class StatusOrder : IEntityBase<string>
{
public string ID { get; set; }
public virtual ICollection<HistoryStatusOrder> HistoriesStatusOrder { get; set; }
}
這裏是我的Search
方法:
// do multiple searches
if (searchOrderVM.OrderNumber != null)
queryable = queryable.Where(x => x.OrderNumber.ToString().Contains(searchOrderVM.OrderNumber.ToString()));
// Next
if (searchOrderVM.SelectedOrdersStatus != null)
{
// Need to return queryable = ....
}
// Next search...
....
// Finally I do .ToList() to launch the query in database.
感謝您的幫助:)
您的意思是「爲每個訂單查找最新的[具有特定狀態值的HistoryStatus]」或「查找_latest_ HistoryStatus具有特定狀態值的每個訂單的歷史狀態」?另外,哪個屬性保存你提到的日期? –
我需要檢索IQueryable所以我需要根據Date和StatusOrderCode找到所有具有最新HistoryStatusOrder的Orders。我添加了缺少的道具。 –
Goba