如何正确过滤子对象?

时间:2009-10-27 18:01:03

标签: .net linq-to-sql

我为语法错误道歉,这是我对问题的简单解释。

我已经设置了我的dbml文件,其中包含CustomerId上的客户和订单之间的关系。 我正在尝试退还少于10美元的客户的所有订单。

Customer customer = context.Customers.FirstOrDefault(c => c.Id == 123);
IEnumerable<Order> orders = customer.Orders.Where(o => o.Total < 10);

这需要永远,因为当枚举订单时,生成的sql忽略where子句,提取1000个记录,然后在内存中根据where子句筛选出订单。

如何设置它以便生成一个过滤服务器订单的查询?

1 个答案:

答案 0 :(得分:2)

这将被翻译成您期望的SQL:

var qry = from o in context.Orders
          where o.CustomerId == 123 
                && o.Total < 10
          select o;

(编辑)

查看我的日志后,我可以看到为您的代码生成的SQL也是我所期望的,并且过滤是在使用SQL的数据库中完成的。因此,订单并非全部加载。您是否更改了数据上下文中的任何选项,例如DeferredLoadingEnabled或提供了LoadOptions