Linq调用LoadProducts方法

开发 后端
这里介绍Linq调用LoadProducts方法,包括介绍LoadWith方法和Associate With方法,使用Associate With方法来限制订单详细信息的排序规则。

学习Linq时,经常会遇到Linq调用LoadProducts方法问题,这里将介绍Linq调用LoadProducts方法问题的解决方法。

LoadWith方法和Associate With方法

这个例子说明:使用LoadWith方法来确保在检索客户信息的同时检索订单信息,在检索订单信息的同时检索订单详细信息, 仅仅访问一次数据库。即可以在一个查询中检索许多对象。使用Associate With方法来限制订单详细信息的排序规则。

  1. NorthwindDataContext db2 = new NorthwindDataContext();  
  2. DataLoadOptions ds = new DataLoadOptions();  
  3. ds.LoadWith<Customer>(p => p.Orders);  
  4. ds.LoadWith<Order>(p => p.OrderDetails);  
  5. ds.AssociateWith<Order>(  
  6. p => p.OrderDetails.OrderBy(o => o.Quantity));  
  7. db2.LoadOptions = ds;  
  8. var custs = (  
  9. from c in db2.Customers  
  10. where c.City == "London"  
  11. select c);  
  12. foreach (var cust in custs)  
  13. {  
  14. foreach (var ord in cust.Orders)  
  15. {  
  16. foreach (var orderDetail in ord.OrderDetails)  
  17. {  
  18. //查询cust.CustomerID, ord.OrderID  
  19. //orderDetail.ProductID, orderDetail.Quantity  
  20. }  
  21. }  

语句描述:在原始查询过程中使用 LoadWith 请求相关数据,以便稍后在检索到的各个对象中导航时此示例还说明在急切加载关系对象时可以使用 Assoicate With 对它们进行排序。

Linq调用LoadProducts方法

这个例子在Category类里提供了一个LoadProducts分部方法。当产品的类别被加载的时候,就直接优先Linq调用LoadProducts方法来查询没有货源的产品。

  1. private IEnumerable<Product> LoadProducts(Category category)  
  2. {  
  3. //在执行LINQ to SQL的时候,这个LoadProducts分部方法  
  4. //优先加载执行,这里用存储过程也可以.   
  5. return this.Products  
  6. .Where(p => p.CategoryID == category.CategoryID)  
  7. .Where(p => !p.Discontinued);  

执行下面的查询时,利用上面方法返回的数据进行下面的操作:

  1. NorthwindDataContext db2 = new NorthwindDataContext();  
  2. DataLoadOptions ds = new DataLoadOptions();  
  3. ds.LoadWith<Category>(p => p.Products);  
  4. db2.LoadOptions = ds;  
  5. var q = (  
  6. from c in db2.Categories  
  7. where c.CategoryID < 3 
  8. select c);  
  9. foreach (var cat in q)  
  10. {  
  11. foreach (var prod in cat.Products)  
  12. {  
  13. //查询cat.CategoryID, prod.ProductID  
  14. }  

语句描述:重写 Category 类中的分部方法LoadProducts。加载某种类别的产品时,Linq调用LoadProducts方法以加载此类别中未停产的产品。

【编辑推荐】

  1. LINQ to DataSet查询详解
  2. Linq实现XML转换浅谈
  3. Linq to SQL强类型DataContext
  4. Linq SelectMany学习经验
  5. 使用LINQ进行数据转换剖析
责任编辑:佚名 来源: IT168
相关推荐

2009-09-09 13:18:26

Linq Submit

2009-09-17 11:32:52

LINQ调用存储过程

2009-09-09 16:45:29

Linq调用数据访问服

2009-09-15 11:08:01

LinQ调用存储过程

2009-09-14 16:41:23

LINQ To XML

2009-09-15 16:44:44

Linq排序

2009-05-11 10:40:36

.NETLINQforeach

2009-09-10 16:32:19

LINQ Where

2009-09-11 10:20:36

Linq扩展方法

2009-09-17 11:29:50

Linq扩展方法

2009-09-08 15:39:13

Linq使用Inser

2010-06-03 08:55:43

LINQ

2009-09-17 08:47:00

Linq插入数据

2009-09-13 21:52:16

LINQ字符串

2009-09-17 08:47:00

Linq查询

2009-09-10 09:35:25

Linq语句

2009-12-23 09:04:41

LINQ通用分页

2009-08-27 13:10:54

LINQ from子句

2012-09-18 09:39:57

Linq项目高效

2009-09-11 15:12:26

LINQ执行存储过程
点赞
收藏

51CTO技术栈公众号