【发布时间】:2010-07-28 12:44:51
【问题描述】:
我正在尝试将 EF 返回的结果过滤为仅相关的结果 - 在下面的示例中为一年中的结果 (formattedYear) 和订单类型 (filtOrder)
我有一组简单的对象
人 1-M 订单 1-M 订单
这些关系已经在 Model.edmx 中定义
在 SQL 中我会做类似...
select * from PEOPLE inner join ORDERS on ORDERS.PEOPLE_RECNO=PEOPLE.RECORD_NUMBER ORDERLINE.ORDER_RECNO=ORDERS.RECORD_NUMBER 上的内部连接 ORDERLINE 其中 ORDERLINE.SERVICE_YEAR=@formattedYear 和 ORDERS.ORDER_KEY=@filtOrder
我尝试了几种方法...
var y = _entities.PEOPLE.Include("ORDERS").Where("it.ORDERS.ORDER_KEY=" + filtOrder.ToString()).Include("ORDERLINEs").Where("it.ORDERS.ORDERLINEs.SERVICE_YEAR='" + formattedYear + "'");
var x = (from hp in _entities.PEOPLE
join ho in _entities.ORDERS on hp.RECORD_NUMBER equals ho.PEOPLE_RECNO
join ol in _entities.ORDERLINEs on ho.RECORD_NUMBER equals ol.ORDERS_RECNO
where (formattedYear == ol.SERVICE_YEAR) && (ho.ORDER_KEY==filtOrder)
select hp
);
y 失败,ORDER_KEY is not a member of transient.collection... 并且 x 返回了正确的人,但他们附上了他们的所有订单 - 不仅仅是我追求的那些。
我想我错过了一些简单的东西?
【问题讨论】:
标签: c# entity-framework asp.net-mvc-2