我目前有多种方法可以做同样的事情,但只是查询不同的表。
我试图只使用一种方法并传递方法参数,这样我就可以跳过创建多个方法并使我的代码消失。
这就是我目前的情况:
MyEntityModel entity = new MyEntityModel();
private void loadData()
{
var query = from data in entity.Table1
select data;
myDataGrid.ItemsSource = query.ToList();
}
我想要这样的事情:
MyEntityModel entity = new MyEntityModel();
private void loadData(DataGrid dataGrid, Table myTable )
{
var query = from data in entity.myTable
select data;
dataGrid.ItemsSource = query.ToList();
}
我不确定我应该为myTable传递什么类型的参数
我尝试将其作为System.Data.Entity.DbSet
和MyEntityModel
使用LINQ是否可以这样?
答案 0 :(得分:0)
您可以创建泛型方法,该方法从提供的实体类型的DbSet实例返回所有数据:
MyEntityModel entity = new MyEntityModel();
private void LoadData<T>(DataGrid dataGrid)
where T : class
{
dataGrid.ItemsSource = entity.Set<T>().ToList();
}
像
一样使用它LoadData<Table1>(myDataGrid); // Table1 is a entity type name
答案 1 :(得分:0)
虽然lazy's answer是一个选项,但另一个选择是接受IQueryable
作为参数:
private void LoadData<T>(DataGrid dataGrid, IQueryable<T> query)
{
dataGrid.ItemsSource = query.ToList();
}
然后你可以这样称呼它:
LoadData(dataGrid, entity.Table1);