我有以下Linq声明:

(from order in Orders.AsEnumerable()
 join component in Components.AsEnumerable()
    on order.ORDER_ID equals component.ORDER_ID
 join detail in Detailss.AsEnumerable()
    on component.RESULT_ID equals detail.RESULT_ID
 where orderRestrict.ORDER_MNEMONIC == "MyOrderText"
 select new 
            {
                Mnemonic = detail.TEST_MNEMONIC,
                OrderID = component.ORDER_ID,
                SeqNumber = component.SEQ_NUM
            }).ToList()

我希望这会提出以下问题:

select  *   
from    Orders ord (NoLock)   
        join Component comp (NoLock)
          on ord .ORDER_ID = comp.ORDER_ID
        join Details detail (NoLock)
          on comp.RESULT_TEST_NUM = detail .RESULT_TEST_NUM
where   res.ORDER_MNEMONIC = 'MyOrderText'

但我得到3个单独的查询,从表中选择所有行。我猜Linq然后过滤了值,因为我最终得到了正确的值。

问题在于它需要太长时间,因为它会从所有三个表中拉下所有行。

我有什么想法可以解决这个问题吗?

有帮助吗?

解决方案

从查询中删除.AsEnumerable(),因为它们阻止在服务器上评估整个查询。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top