【问题标题】:Problems with linq in getting data from listlinq 从列表中获取数据的问题
【发布时间】:2020-01-30 00:39:06
【问题描述】:

我有问题 我需要从 linq 的列表中获取列表。但是它的列表类型在编译阶段是未知的。

using(var context = MyDbContext())
{
    var list = (from p in context.Employee select p).ToList()
}

我不知道什么只是财产(更改员工)

我想做一些事情

public IList<T> GetAll(string propName)
{
   using (var context = new ModelContext())
   {
      return (from p in context.GetType().GetProperty(propName) select p).ToList();
   }
}

【问题讨论】:

  • 您可以执行context.Set&lt;T&gt; 之类的操作来获取实体的DbSet。但具体你想要什么并不完全清楚。
  • 这能回答你的问题吗stackoverflow.com/questions/52721697/…
  • 所以你想动态构建 linq?你需要看看 Expression 类

标签: c# linq


【解决方案1】:

DbContext.Database 属性提供了一个 API,允许您直接执行 ADO.NET 操作。 GetDbConnection 方法返回一个表示上下文底层连接的 DbConnection 对象。从那时起,您可以恢复到熟悉的 ADO.NET API:

public dynamic GetAll(string propName)
{

    using (var context = new SampleContext())
    using (var command = context.Database.GetDbConnection().CreateCommand())
    {
        //Escape propName to prevent SQL injection
        var builder = new SqlCommandBuilder();
        string escapedTableName = builder.QuoteIdentifier(propName);

        command.CommandText = $"SELECT * From {escapedTableName}";
        context.Database.OpenConnection();
        using (var dataReader= command.ExecuteReader())
        {
           var dataTable = new DataTable();
           dataTable.Load(dataReader);
           return dataTable ;
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-07
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多