嗨,我在 c# 中创建了一个 winform 应用程序。
我使用 EF5 处理数据库。
为了将数据绑定到我的 datagridviews,我从 BindingSource 创建了一个组件,该组件具有运行此事件的 Bind() 方法:
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,我也只想为所有表编写一种方法。
这意味着我不能像
表达式< Func< AnyDbSet,bool>>
我不知道怎么做?
谢谢