Linq调用LoadProducts方法

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

创新互联始终坚持【策划先行,效果至上】的经营理念,通过多达10年累计超上千家客户的网站建设总结了一套系统有效的全网推广解决方案,现已广泛运用于各行各业的客户,其中包括:公路钻孔机等企业,备受客户赞扬。

LoadWith方法和Associate With方法

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

 
 
 
  1. NorthwindDataContext db2 = new NorthwindDataContext();
  2. DataLoadOptions ds = new DataLoadOptions();
  3. ds.LoadWith(p => p.Orders);
  4. ds.LoadWith(p => p.OrderDetails);
  5. ds.AssociateWith(
  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. }
  22. }

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

Linq调用LoadProducts方法

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

 
 
 
  1. private IEnumerable 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);
  8. }

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

 
 
 
  1. NorthwindDataContext db2 = new NorthwindDataContext();
  2. DataLoadOptions ds = new DataLoadOptions();
  3. ds.LoadWith(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. }
  15. }

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

文章题目:Linq调用LoadProducts方法
文章源于:http://www.shufengxianlan.com/qtweb/news21/405071.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联