Emm*_*res 2 c# linq datareader fetch
我正在从带有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();
}
}
Run Code Online (Sandbox Code Playgroud)
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");
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我.最好的祝福.
您应该在数据库端而不是客户端执行尽可能多的过滤:
string query = "SELECT XMLConfig FROM TableCfg WHERE Enable = True";
Run Code Online (Sandbox Code Playgroud)
注意现在你甚至不需要提取Enable,因为你已经知道它将True适用于所有匹配的行.
您还应该考虑使用LINQ to SQL或Entity Framework,而不是您当前使用的相当低级别的堆栈.它并不总是合适的,但它确实使事情变得更加清洁.