【发布时间】:2017-04-13 09:02:42
【问题描述】:
我的数据库中有这种关系:
Order => historyStatus => Status
Order 包含HistoryStatus 的列表,HistoryStatus 包含一个Status。
我的用例是:用确定的Status 搜索所有Order 并获取最新的HistoryStatus(基于日期)
如何在 linq to entity 和 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.
感谢您的帮助:)
【问题讨论】:
-
您的意思是“查找每个订单的最新 [具有特定状态值的历史状态]”还是“查找每个订单的历史状态,其中 最新 历史状态具有特定状态值”?另外,您提到的日期是哪个属性?
-
我需要检索一个 IQueryable
所以我需要根据 Date 和 StatusOrderCode 找到所有具有最新 HistoryStatusOrder 的订单。我添加了缺少的道具。
标签: c# entity-framework linq iqueryable