由于(目前)不可能在编译查询中使用 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);
但 OrderState 在我的结果集中仍然为空。我将如何解决这个问题(以编译查询可接受的方式)?
最佳答案
如果您不能使用 .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
中的每个结果提供额外帮助。
关于c# - 将 Include() 重写为 linq 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11011628/