当我有条件时,使用Linq to SQL检索随机行的最佳(和最快)方法是什么,例如某些字段必须为true?
鉴于我在Linq To Sql模型中有三个表(Customer,Orders和OrderLines)
客户 - 一对多 - >订单 - 一对多 - > OrderLines
我用的时候
var customer = Customers.First();
var manyWay = from o in customer.CustomerOrders
from l in o.OrderLines
select l;
Run Code Online (Sandbox Code Playgroud)
我看到一个查询获得客户,这是有道理的.然后我看到客户订单的查询,然后是每个订单获得订单行的单个查询,而不是加入两个订单.总共n + 1个查询(不包括获取客户)
但是,如果我使用
var tableWay = from o in Orders
from l in OrderLines
where o.Customer == customer
&& l.Order == o
select l;
Run Code Online (Sandbox Code Playgroud)
然后,我没有看到每个订单获得订单行的单个查询,而是看到连接两个表的单个查询.共1个查询(不计入客户)
我更喜欢使用第一个Linq查询,因为它对我来说似乎更具可读性,但为什么L2S不像我在第一个查询中所期望的那样加入表?使用LINQPad我看到第二个查询被编译成SelectMany,虽然我没有看到第一个查询的变化,不确定这是否是我的查询中某些问题的指示.