我正在从表中获取值,像这样的数据阅读器:
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");
}
请帮帮我。致以最亲切的问候。
您应该在数据库端而不是客户端进行尽可能多的过滤:
string query = "SELECT XMLConfig FROM TableCfg WHERE Enable = True";
请注意,现在您甚至不需要获取Enable
,因为您已经知道它将为所有匹配行的True
。
你还应该考虑使用LINQ to SQL或实体框架,而不是你目前使用的相当低级的堆栈。并不总是合适,但它确实在合适的地方使事情更清晰。