将 Include() 重写为 linq 连接
本文关键字:linq 连接 重写 Include | 更新日期: 2023-09-27 18:36:56
由于(目前)不可能在编译的查询中使用 Include(),因此我正在尝试将它们重写为连接。但它似乎并没有像我想要的那样工作。
假设我有这种关系:
Order OrderState
Id Id
OrderStateId Description
现在我曾经获取如下描述:
var q = (from o in context.Orders
where o.Id = orderId
select o).Include("OrderState");
我尝试将其重写为:
var q = (from o in context.Orders
join st in context.OrderStates on o.OrderStateId equals st.Id
where o.Id = orderId
select o);
但是在我的结果集中,订单状态仍然是空的。我将如何解决这个问题(以一种编译查询可以接受的方式)?
如果你不能使用 .Include
,你需要在结果中的某个地方实际包含o.OrderState
,那么这个怎么样?
var q = (from o in context.Orders
where o.Id = orderId
select new { Order = o, o.OrderState });
o.Order.OrderState
应该连接到o.OrderState
,而无需对q
中的每个结果提供额外帮助。