当我创建此查询时:
context.Orders.Where(x => context.Customers.Where(c => c.PersonID ==
10002).Select(c => c.CustomerID.Value).Contains(x.CustomerID.Value)).ToList();
我希望它创建一个这样的查询:
select * from Orders where CustomerID in (select CustomerID from Customers
Where PersonID = 10002)
但生成的查询相当于:
select * from Orders o where Exists(select 1 from Customers c where
c.PersonID = 10002 and c.CustomerID = o.CustomerID)
这是一个非常简单的查询,可以写成:
context.Orders.Where(x => x.Customer.PersonID == 10002).ToList()
但我的实际情况不可能。此外,对于这个简单的查询,执行时间没有什么不同,但在更复杂的情况下,预期的查询运行得更快。
如何强制 EF 以我想要的方式使用查询?