私の特定のシナリオでは、レコードを検索するためのSQL文を動的に構築します。これは、ビジネスサービス層のWebApiでサーバー側で行われます。今度は、この機能を拡張して、WHERE
節をクライアント側でも設定できるようにします。強く型付けして、クライアント上で列名をハードコードしないようにしたいと思います。ラムダ式パラメータを取得する方法
これまでのところ、私は次のようでした:
1)INFORMATION_SCHEMA
からビューの列を取得し、列の値は、後の段階で設定されるようにDictionary<string, object>
を埋めます。カスタムクラスに変更して、column_name = column_value
の代わりに比較フィールドを追加することができます。
public class CustomerSearchDto
{
[SearchColumn(Name = "customer_type")]
public CustomerType CustomerType { get; set; }
[SearchColumn(Name = "city")]
public string City { get; set; }
public CustomerSearchDto()
{ }
}
3)だから、クライアントに、今私が行うことができます:
2)私は、カスタム属性と私がクライアントに公開するだけで検索カラムを含むクラスを作成しました
//Following line is pseudo-code
var predicate = (x => x.CustomerType == CustomerType.Private);
このラムダ式を使用し、(1)の列リストを持ち、(2)の列名を知っている場合、辞書の対応する列の値を設定するにはどうすればよいですか?