如何从SqlDataReader中只获取一些行

本文关键字:获取 SqlDataReader | 更新日期: 2023-09-27 18:02:04

我正在从表中获取值,像这样的数据阅读器:

    string query = @"SELECT XMLConfig, Enable FROM TableCfg";
    using (SqlConnection cnction = new SqlConnection(cnnstr))
    {
      cnction.Open();
      using (SqlCommand sqlCmd = new SqlCommand(query, cnction))
      {
         SqlDataReader dtRead = sqlCmd.ExecuteReader();
         while (dtRead.Read())
         {
           xmlConf = dtRead.GetString(0);
           enabl = dtRead.GetString(1);
         }
         dtRead.Close();
      }
    }

Enable字段是一个布尔值(True/False)。是否有一种方法来获取仅行,其中字段启用="真"?我试着使用LINQ,但我是新的,我一定是做错了什么。

using (SqlCommand sqlCmd = new SqlCommand(query, cnction))
{
  SqlDataReader dtRead = sqlCmd.ExecuteReader();
  var ob =(from IDataRecord r in sqlCmd.ExecuteReader()
           where r.GetString(3).ToString() == "True"
           select "Enable");   
}

请帮帮我。致以最亲切的问候。

如何从SqlDataReader中只获取一些行

您应该在数据库端而不是客户端进行尽可能多的过滤:

string query = "SELECT XMLConfig FROM TableCfg WHERE Enable = True";

请注意,现在您甚至不需要获取Enable,因为您已经知道它将为所有匹配行的True

你还应该考虑使用LINQ to SQL或实体框架,而不是你目前使用的相当低级的堆栈。并不总是合适,但它确实在合适的地方使事情更清晰。