将lambda表达式转换为字符串

时间:2011-01-07 13:19:39

标签: linq-to-sql lambda c#-4.0

这可能看起来像一个奇怪的请求,但是对于需要过滤器属性字符串的API,我认为能够转换提供的类型安全的lambda表达式是一个很好的概念,然后可以将其编译成查询字符串 - 类似本质上是Linq - > SQL。

例如:

 Func<TQueryObj, bool> 
 (invoice) => { invoice.Status == "DRAFT" && invoice.Type == "ACCREF" };

会转换为

 Status=="DRAFT" && Type=="ACCREF"

我正在使用开票API,因此这个例子。有什么办法可以很简单地实现这个目标吗?

干杯

1 个答案:

答案 0 :(得分:4)

您需要制作一个继承的ExpressionVisitor,它将以递归方式抓取Expression<Func<...>>
这并不容易。