我有一个关于C#编程的问题。如何将if语句转换为switch语句。 (textbox属性)
我正在研究如何使if语句进入循环或切换。 P.S.我之所以问这个是因为我不知道如何使这个样品符合switch语句if语句
这里是完整的片段
public void btnSearch_Click(object sender, EventArgs e)
{
using (var cmdconn = new SqlConnection(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = cmdconn;
if (!string.IsNullOrEmpty(cmbDivision.Text) &
(string.IsNullOrEmpty(tbEnduser.Text)))
{
cmd.CommandText = @"select a.*, c.Enduser
from matt.ServiceInfo a
left join matt.Divisions b
on
a.DivisionCode = b.DivisionCode
left join matt.EmployeeInfo c
on a.DivisionCode = c.DivisionCode
where b.DivisionCode like @Division";
cmd.Parameters.AddWithValue("@Division", cmbDivision.Text + '%');
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
btnEdit.Visible = true;
da.Fill(dt);
dgvRptView.DataSource = dt;
}
else if (!string.IsNullOrEmpty(tbEnduser.Text) &
(string.IsNullOrEmpty(cmbDivision.Text)))
{
cmd.CommandText = @"select a.*, c.Enduser
from matt.ServiceInfo a
left join matt.Divisions b
on
a.DivisionCode = b.DivisionCode
left join matt.EmployeeInfo c
on a.DivisionCode = c.DivisionCode
where c.Enduser like @Enduser";
cmd.Parameters.AddWithValue("@Enduser", tbEnduser.Text + '%');
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
dgvRptView.DataSource = dt;
}
else if (!string.IsNullOrEmpty(tbEnduser.Text) &
(!string.IsNullOrEmpty(cmbDivision.Text)))
{
cmd.CommandText = @"select a.*
from matt.ServiceInfo a
left join matt.Divisions b
on a.DivisionCode = b.DivisionCode
where b.DivisionCode like @Division";
cmd.Parameters.AddWithValue("@Enduser", tbEnduser.Text + '%');
cmd.Parameters.AddWithValue("@cmbDivison", cmbDivision.Text + '%');
btnEdit.Visible = true;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
dgvRptView.DataSource = dt;
}
else
{
MessageBox.Show("Please fill the following fields");
}
}
}
我的代码似乎工作正常,事情是,我想增强我的编码, 所以我决定把它转换为for循环来缩短我的代码。显然,我不熟悉每个循环的使用属性。或者如果我使用Switch case,会更好,这是我不熟悉的。有人可以帮助我在较短的行中转换我的代码吗?先谢谢你,我的兄弟姐妹。
你很困惑'&'和'&&'。 –
你不需要开关或者更糟的foreach循环,你需要更好地考虑如何重构你的代码来设置命令文本和你想要处理的三种情况的参数 – Steve
如果你使用存储过程而不是内联查询,那么你甚至不需要使用if或switch语句。存储过程将具有如下子句作为b.DivisionCode,如%IsNull(@Division,b.DivisionCode)%和c.Enduser,如%ISNULL(@Enduser,c.Enduser)% –