如何创建一个完全动态的linq查询

本文关键字:动态 linq 查询 何创建 创建 一个 | 更新日期: 2023-09-27 18:26:49

我需要构建大约30个不同的管理页面来添加/编辑/删除30个不同表中的记录。很明显,我可以花时间创建30个唯一的页面来查询每个表,但我很好奇是否有一种方法可以简单地创建一个动态页面来查询一个动态linq查询。这个linq查询然后返回所有字段&指定表中的记录。

我看到过与此类似的动态linq示例(http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx),但这仍然需要将表名硬编码到查询中。我想做一个类似的选择,输入表的名称(即"产品"、"订单"等),然后以某种方式查询该表:

private List<tableName> MyDynamicQuery(string tableName)
 {
      IEnumerable<tableName> dynamicList;
      using (MyEntities db = _conn.GetContext())
      {
           dynamicList = (from q in db.<tableName>
                        select q).ToList();
      }
      return dynamicList;
 }

有可能做这样的事吗?

感谢

如何创建一个完全动态的linq查询

与其使用表名,为什么不传入选择器呢?它看起来像这样:

private List<T> GetData<T>(Func<MyEntities, IEnumerable<T>> selector)
{
    using (MyEntities db = _conn.GetContext())
    {
        return selector(db).ToList();
    }
}

你会这样使用它:

var orders = GetData(db => db.Orders);

您可以使用实体框架并执行以下操作:

dynamiclist = this.datacontext.Set<T>().ToList(); // where T is the Type, represents the table in EF