1

我正在开发一个使用 Albahari 的 PredicateBuilder 库 http://www.albahari.com/nutshell/在运行时动态创建 linq 表达式的项目。我想找到一种方法,在运行时将这个动态创建的 Expression<Func<T, bool>> 类型的 linq 谓词翻译成可读的英文语句。

我将以静态创建的 linq 语句为例:

从购买中的 p 中
选择 p
,其中 p.Price > 100 && p.Description != "Bike"。

对于这个 linq 语句,我想在运行时动态生成一个英文描述,如下所示:

“您正在搜索价格大于 100 且描述不是自行车的商品”。

是否有任何已经存在的库可以实现这一目标,请记住我正在使用 PredicateBuilder 动态生成 where 谓词。如果不存在解决方案,您将如何构建解决方案?

谢谢!

4

1 回答 1

0

这引起了我的注意,所以我下载了 ExpressionSerializationTypeResolver.csExpressionSerializer.cs然后我:

class Purchase
{
    public decimal Price {get;set;}
    public string Description {get;set;}
}

...

var purchases = new List<Purchase>() { new Purchase() { Price = 150, Description = "Flute" }, new Purchase() { Price = 4711, Description = "Bike" } };

Expression<Func<IEnumerable<Purchase>>> queryExp = () => from p in purchases
    where p.Price > 100 && p.Description != "Bike"
    select p;

ExpressionSerializer serializer = new ExpressionSerializer();
XElement queryXml = serializer.Serialize(queryExp);

然后我遇到了问题,但也许你可以用你查询的相当大的表达式树做点什么?你可以在这里找到它。

于 2010-06-08T19:29:24.533 回答