Monday, 6 January 2014

LINQ Examples 5

Include operators-

[Description("Load OrderDetails with Orders ")]
public void LinqToEntities94() {
  var query0 = _em1.Orders.Include("OrderDetails")
      .Where(c => c.Customer.Address.City == "London").Select(o => o);

  var query1 = query0.OrderBy(o => o.OrderID);
  var r1 = query1.ToList();

  var o1 = query1.First();
  var count1 = o1.OrderDetails.Count();
  Assert.IsTrue(count1 == 2);
}

[Description("Load OrderDetails and Products with Orders ")]
public void LinqToEntities95() {
  var query = _em1.Orders
      .Include("OrderDetails")
      .Include("OrderDetails.Product")
      .Take(3).Select(o => o);

  var query2 = query.OrderByDescending(o => o.OrderID);
  var r2 = query2.ToList();
  var p = r2.First().OrderDetails.First().Product;
  Assert.IsNotNull(p);
  Assert.IsFalse(p.EntityAspect.IsNullOrPendingEntity);
}


class MyClass {
 public static decimal Val = 50;

 public decimal GetVal() {
   return MyClass.Val;
  }
}



Closures



[Description("Uses a local variable as a query parameter.")]
public void LinqToEntities91() {
  MyClass c = new MyClass();

  var query = _em1.Orders
      .Where(o => o.Freight > MyClass.Val).Select(o => o);
  Assert.IsTrue(query.Count() == 360);
}

[Description("Uses a the value of the local variable at query execution time.")]
public void LinqToEntities92() {
 decimal x = 50;
  var query = _em1.Orders.Where(o => o.Freight > x).Select(o => new { o.Freight, o });
  Assert.IsTrue(query.Count() == 360);
  x = 100;
  Assert.IsTrue(query.Count() == 187);
}

No comments:

Post a Comment