1

プロパティとしてクエリパラメータを含むサンプルクエリクラスがあります。このクラスはWCF通信に使用され、サーバー側で適切なフィルター式が生成されます。

サンプルコードはどこにありますか。

internal interface IExpressionBuilder<T>
{
   Func<T, bool> Build();
}

これがサンプル実装です

[DataContract]
public class PersonQuery : IExpressionBuilder<Person>
{
    [DataMember]
    public string IdCardNumber;
    [DataMember]
    public string FirstName { get; set; }
    [DataMember]
    public string LastName { get; set; }
    [DataMember]
    public DateTime? BirthDate { get; set; }

    #region Implementation of IExpressionBuilder<Data>

    public Func<Person, bool> Build()
    {
        throw new NotImplementedException();
    }

    #endregion
}

利用方法:

publi List<Person> GetPersonByQuery(PersonQuery query)
{
    (using context = new SampleContext())
    {
        return List<Person> foundPersons = context.people.where(query.build());
    }
}

アイデアは非常にサンプルであることがわかりますが、私の質問は、build()メソッドが呼び出されたときに、PersonQueryプロパティが設定されている場合、それらを式に動的に含める方法です。

4

1 に答える 1

0

Dynamic Linqを見たことがありますか?それはあなたの問題に理想的に適しているようです。

関数を使用して式ツリーを作成する場合、このライブラリは式ツリーを作成するための優れた流暢な構文を提供します。

于 2012-09-10T15:38:50.233 に答える