首页 > 解决方案 > 查询具有字符串字段的数据库

问题描述

我可以以某种方式在数据库中查询我在字符串中拥有的字段吗?

string fieldName = "Column1";

SQL:

string sql = "SELECT " + fieldName + " FROM myTable";

我需要这样做LINQ

是否有内置的快速解决此类问题的方法,或者反思是否起作用?

标签: c#linq

解决方案


您可以为此实现一个简单的方法:

private static IEnumerable<IDataRecord> ReadSqlRecords(string sql) {
  //TODO: Put connection string here
  //TODO: I've assumed you work with MS SQL; if not replace SqlConnection 
  using (var conn = new SqlConnection("ConnectionStringHere")) {
    conn.Open();

    using (var q = conn.CreateCommand()) {
      q.CommandText = sql;

      using (var reader = q.ExecuteReader()) {
        while (reader.Read())
          yield return reader;
      }
    }
  }
}

然后你就可以使用它了

string sql = $"SELECT {fieldName} FROM myTable";

// Now you can put Linq
var result = ReadSqlRecords(sql)     
  .Where(record => Convert.ToInt32(record["Id"]) > 100)
  .Count();

推荐阅读