创建使用linq查询数据库的方法

时间:2013-08-26 15:51:47

标签: c# wpf linq linq-to-entities

我目前有多种方法可以做同样的事情,但只是查询不同的表。

我试图只使用一种方法并传递方法参数,这样我就可以跳过创建多个方法并使我的代码消失。

这就是我目前的情况:

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.DbSetMyEntityModel

传递

使用LINQ是否可以这样?

2 个答案:

答案 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);