我有这样的关系,在我的数据库:一个在许多(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