Как программно перевести запрос LINQ в читаемый текст на английском языке, который правильно описывает выражение linq? - PullRequest
1 голос
/ 08 июня 2010

Я работаю над проектом, который использует библиотеку PredicateBuilder от Albahari http://www.albahari.com/nutshell/ для динамического создания выражения linq во время выполнения.Я хотел бы найти способ перевести этот динамически созданный предикат linq типа Expression> в удобочитаемое английское утверждение во время выполнения.

Я приведу статически созданный оператор linq в качестве примера:

из p в Закупках
выберите p
, где p.Price> 100 && p.Description! = "Bike ".

Для этого оператора linq я хотел бы динамически сгенерировать во время выполнения английское описание в соответствии с:

" Вы ищете покупки, цена которых превышает 100 иописание - это не велосипед ".

Существуют ли библиотеки, которые уже достигли этой цели, имейте в виду, что я использую PredicateBuilder для динамической генерации предиката where.Если решения не существует, как бы вы решили создать решение?

Спасибо!

1 Ответ

0 голосов
/ 08 июня 2010

Это привлекло мое внимание, поэтому я скачал ExpressionSerializationTypeResolver.cs и ExpressionSerializer.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);

и затем у меня возникли проблемы, но, возможно, вы могли бы что-то сделать с довольно большим деревом выражений вашего запроса? Вы можете найти это здесь .

...