运行环境
OS: Name: Microsoft(R) Windows(R) Server 2003, Enterprise Edition, Version: 5.2.3790 Service Pack 2 Build 3790,Install Path:C盘。
IDE:Visual Studio 2008 Version 9.0.30729.1 SP,.NET Framework Version 3.5 SP1。
使用表达式树分析器
准备使用表达式树分析器
1、 下载Visual Studio 2008 CSharp 实例
2、 解压实例,并执行F6运行ExpressionTreeVisualizer项目(所在位置:…\CSharpSamples\LinqSamples\ExpressionTreeVisualizer),生成dll文件:\CSharpSamples\LinqSamples\ExpressionTreeVisualizer\bin\Debug
3、 拷贝dll到分析器目录
以下两个目录只需放置一个地方即可。
个人使用的分析器目录
一般放置在操作系统盘符C:\Documents and Settings\lion.lv\My Documents\Visual Studio 2008\Visualizers
根据个人喜好我们也可以使用VS2008定制路径:
插图
公共使用分析器目录
比如我的VS2008指定安装在D盘
D:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers
运用表达式树分析器
场景1:用来查看变量表达式
1、 建立控制台应用程序
增加以下代码到program的Main方法中
using System;
using System.Linq.Expressions;
namespace ConsoleApplication107
{
class Program
{
static void
{
Expression<Func<int, int, int>> expression = (a, b) => a + b;
Console.WriteLine(expression);
}
}
}
2、 在vs运行时查看变量表达式的快速提示
设置断点在WriteLine行,F5运行程序后,鼠标移到expression上时,弹出带有放大镜的小信息框
3、 点击放大镜查看表达式树分析器
当你勾选分析器选项,单击就可以查看到表达式树的所有节点。
场景2:用来查看lambda表达式
在使用LINQ to SQL查询时,我们可以使用表达式树分析器来查看表达式树。在这种场景下,表达式树作为由LINQ to SQL 查询表达式返回的IQueryable变量的成员。
小结:
本文主要介绍了如何使用VS2008例子中提供的表达式树分析器。
SourceCode
//Demo1
//Expression<Func<int, int, int>> expression = (a, b) => a + b;
//Console.WriteLine(expression);
//Demo2
//var persons = new List<Person> {
// new Person{Name="James",Age=19},
// new Person {Name = "Alfred", Age=20},
// new Person {Name = "Mingle", Age=21},
// };
//var selectperson = from p in persons where p.Age >= 20 select p.Name.ToUpper();
//foreach (var q in selectperson)
// Console.WriteLine(q);
////Demo3
DataContext ctx = new DataContext("server=127.0.0.1;database=Northwind;uid=sa;pwd=123456");
Table<Customer> Customers = ctx.GetTable<Customer>();
var query = from c in Customers
where c.City == "
select c;
foreach (var q in query)
Console.WriteLine(q.CustomerID);
//Demo4
//var select = from c in ctx.Customers where c.CustomerID.StartsWith("A") select new { 顾客ID = c.CustomerID, 顾客名 = c.Name, 城市 = c.City };
//DataContext ctx = new DataContext("server=wss-test;database=Northwind;uid=sa;pwd=123456");
//Table<Customer> Customers = ctx.GetTable<Customer>();
//var query = from c in Customers
// where c.City == "
// select c;
//foreach (var q in query)
// Console.WriteLine(q.CustomerID);
}
}
class Person
{
public string Name { get; set;}
public int Age {get;set;}
}
参考资料:
http://blogs.msdn.com/charlie/archive/
扩展思考:
1、 表达式树分析器在VS2008中部署的办法在VS2010中无效,哪么我们在VS2010中应该如何使用呢?