1

私は、アルバハリの PredicateBuilder ライブラリ http://www.albahari.com/nutshell/を使用して、実行時に動的に linq 式を作成するプロジェクトに取り組んでいます。この動的に作成された Expression<Func<T, bool>> 型の linq 述語を、実行時に読みやすい英語のステートメントに変換する方法を見つけたいと思います。

例として、静的に作成された linq ステートメントを示します。

from p in Purchases
select p
where 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 に答える