LINQ to SQL动态查询概括

LINQ to SQL有很多值得学习的地方,这里我们主要介绍LINQ to SQL动态查询,包括介绍LINQ to SQL功能和调试特定等方面

LINQ to SQL动态查询

使用LINQ to SQL动态查询,这个例子用CreateQuery()方法创建一个IQueryable<T>类型表达式输出查询的语句。

这里给个例子说明一下:

 
 
 
  1. var c1 = Expression.Parameter(typeof(Customer), "c");  
  2. PropertyInfo City = typeof(Customer).GetProperty("City");  
  3.  
  4. var pred = Expression.Lambda<Func<Customer, bool>>(  
  5. Expression.Equal(  
  6. Expression.Property(c1, City),  
  7. Expression.Constant("Seattle")  
  8.  ), c1  
  9. );  
  10. IQueryable custs = db.Customers;  
  11. Expression expr = Expression.Call(typeof(Queryable), "Where",  
  12. new Type[] { custs.ElementType }, custs.Expression, pred);  
  13. IQueryable<Customer> q = db.Customers.AsQueryable().  
  14. Provider.CreateQuery<Customer>(expr); 

Log属性用于将SQL查询或命令打印到TextReader。此方法对了解 LINQ to SQL功能和调试特定的问题可能很有用。

下面的示例使用Log属性在SQL代码执行前在控制台窗口中显示此代码。我们可以将此属性与查询、插入、更新和删除命令一起使用。

 
 
 
  1. //关闭日志功能  
  2. //db.Log = null;  
  3. //使用日志功能:日志输出到控制台窗口  
  4. db.Log = Console.Out;  
  5. var q = from c in db.Customers  
  6. where c.City == "London"  
  7. select c;  
  8. //日志输出到文件  
  9. StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true);  
  10. db.Log = sw;  
  11. var q = from c in db.Customers  
  12. where c.City == "London"  
  13. select c;  
  14. sw.Close(); 

【编辑推荐】

  1. Linq匿名类型简单概述
  2. Linq随机读取数据浅析
  3. Linq Lambda表达式全面分析
  4. Linq扩展方法简单分析
  5. 初探Linq局部变量类型
THE END