【发布时间】:2021-05-20 19:13:15
【问题描述】:
我有一个窗口应用程序,将列的一些值显示为复选框, 例如:列名“DD_14:你找工作了吗?”所以答案是和否是复选框。
我想要查看的是从 DD_14 中选择“是”或从另一列中选择“否”的案例分布,例如 DD_15。
我只需要编辑查询,但它是这样写的:
string sql_filter_part1 = "";
if (cb_DD_14_A_DESC_Yes.Checked)
{
sql_filter_part1 = sql_filter_part1 + " " + @"""DD_14_A_SEQ_NO""::int=1 ";
}
if (cb_DD_14_A_DESC_No.Checked)
{
sql_filter_part1 = sql_filter_part1 + " " + @"""DD_14_A_SEQ_NO""::int=2 ";
}
if (cb_DD_14_A_DESC_NotSelected.Checked)
{
sql_filter_part1 = sql_filter_part1 + " " + @"""DD_14_A_SEQ_NO"" is null ";
}
if (sql_filter_part1.Length > 0)
{
sql_filter_part1 = sql_filter_part1.Trim();
sql_filter_part1 = sql_filter_part1.Replace(" ", " or ");
sql_filter_part1 = "(" + sql_filter_part1 + ")";
}
和其他栏目:
string sql_filter_part2 = "";
if (cb_DD_14_B_DESC_1.Checked)
{
sql_filter_part2 = sql_filter_part2 + " " + @"""DD_14_B_SEQ_NO""::int=1 ";
}
if (cb_DD_14_B_DESC_2.Checked)
{
sql_filter_part2 = sql_filter_part2 + " " + @"""DD_14_B_SEQ_NO""::int=2 ";
}
if (cb_DD_14_B_DESC_3.Checked)
{
sql_filter_part2 = sql_filter_part2 + " " + @"""DD_14_B_SEQ_NO""::int=3 ";
}
if (cb_DD_14_B_DESC_4.Checked)
{
sql_filter_part2 = sql_filter_part2 + " " + @"""DD_14_B_SEQ_NO""::int=4 ";
}
if (cb_DD_14_B_DESC_NotSelected.Checked)
{
sql_filter_part2 = sql_filter_part2 + " " + @"""DD_14_B_SEQ_NO"" is null ";
}
if (sql_filter_part2.Length > 0)
{
sql_filter_part2 = sql_filter_part2.Trim();
sql_filter_part2 = sql_filter_part2.Replace(" ", " or ");
sql_filter_part2 = "(" + sql_filter_part2 + ")";
}
sql_filter = sql_filter_part1 + " " + sql_filter_part2 + " " + sql_filter_part3 + " " + sql_filter_part4 + " " + sql_filter_part5;
并将它们保存到类中,选中复选框后,该类将在程序中运行。
所以重点是我想查看过滤器是用户在第 1 列中选择“是”还是在第 2 列中选择“是”。
【问题讨论】:
-
首先正常地重写这个查询,使用参数并且没有所有的连接。您可能会发现它更容易,并且可能还会在 Stack Overflow 上获得更多帮助
-
借助类似 LINQ 的 ORM,可以轻松完成根据条件的查询组合。可以用吗?
-
我会努力的,继续努力