我从带有datareader的表中获取值,如下所示:
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)。有没有办法只获取行,其中field enable =" True"? 我尝试使用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");
}
请帮帮我。 最诚挚的问候。
答案 0 :(得分:7)
您应该在数据库端而不是客户端执行尽可能多的过滤:
string query = "SELECT XMLConfig FROM TableCfg WHERE Enable = True";
请注意,现在您甚至不需要提取Enable
,因为您已经知道所有匹配的行都是True
。
您还应该考虑使用LINQ to SQL或Entity Framework,而不是您当前使用的相当低级别的堆栈。它总是是合适的,但它确实使事情变得更加清洁。