こんにちは、c# で winform アプリケーションを作成します。
私はEF5を使用してデータベースを操作しています。
データをデータグリッドビューにバインドするために、このイベントを実行する Bind() メソッドを持つ BindingSource からコンポーネントを作成しました。
private object bindingSourceTbl1_DataSourceBinding(object sender, EventArgs e)
{
using (SampleDbEntities dbo = new SampleDbEntities())
{
return(from x in dbo.Tbl1
where x.Id == (int)comboBoxPerson.SelectedValue
select x).Take(1000).ToList();
}
}
私のデータベースには多くの大きなデータがあるため、データの一部をフェッチします。そして、一致レコードを取得するために検索を使用します。このために、グリッド内の各列をフィルター処理するためのテキスト ボックスを作成する SearchPanel コンポーネントを作成しました。
今、式ツリーをパラメーターとしてイベントに送信して、次のように where 句に結合したいと考えています。
private object bindingSourceTbl1_DataSourceBinding(object sender, EventArgs e,Expression whereClause)
{
using (SampleDbEntities dbo = new SampleDbEntities())
{
return(from x in dbo.Tbl1
where x.Id == (int)comboBoxPerson.SelectedValue && whereClause
select x).Take(1000).ToList();
}
}
しかし、式ツリービルダーメソッドはコンポーネントコードに存在し、プロジェクトの DbContext にアクセスできず、コンポーネントに fieldNames があるだけで、すべてのテーブルに対して 1 つのメソッドだけを記述したいと考えています。
これは私がのように戻ることができないことを意味します
Expression< Func< AnyDbSet,bool>>
そして、私はそれを行う方法がわかりませんか?
ありがとう