4 回答

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
嘗試這個(gè):
有多種方法可以做到這一點(diǎn):ABCD 的組合可以創(chuàng)建總共 15 種組合。我在開關(guān)盒中創(chuàng)建了所有 15 種組合:
string checkboxvalue = "";
if(chkA.Checked()) checkboxvalue +="A";
if(chkB.Checked()) checkboxvalue +="B";
if(chkC.Checked()) checkboxvalue +="C";
if(chkD.Checked()) checkboxvalue +="D";
switch(checkboxvalue)
{
case "ABCD":
strSql += "AND .....;"
break;
case "ABC":
strSql += "AND .....;"
break;
case "ABD":
strSql += "AND .....;"
break;
case "ACD":
strSql += "AND .....;"
break;
case "BCD":
strSql += "AND .....;"
break;
case "AB":
strSql += "AND .....;"
break;
case "AC":
strSql += "AND .....;"
break;
case "AD":
strSql += "AND .....;"
break;
case "BC":
strSql += "AND .....;"
break;
case "BD":
strSql += "AND .....;"
break;
case "CD":
strSql += "AND .....;"
break;
case "A":
strSql += "AND .....;"
break;
case "B":
strSql += "AND .....;"
break;
case "C":
strSql += "AND .....;"
break;
case "D":
strSql += "AND .....;"
break;
}

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
假設(shè)用戶選擇框 A、C、D。
strSql += "SELECT column1, column2, ...
FROM table_name;"
switch(checkboxvalue)
{
case (("ABCD")): //<---Contains "ACD" but not "B" NO MATCH
strSql += "AND .....;"
break;
case (("ABC")): //<---- Contains "A" but not "BC" NO MATCH
strSql += "AND.......;"
break;
case (("AB")): //<--Contains "A" but no "B" NO MATCH
strSql += "AND......;"
break;
case (("AC")): //<--Contains "AC" but no "D" NO MATCH
strSql += "AND.....";
break;
case (("ACD")): //<--MATCH!
strSql += "AND......"; //<--add to select to pull correct data
break;
}

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
由于您基本上是在比較布爾值,因此我建議您制作一個(gè)表格來映射您擁有的不同復(fù)選框組合,以驗(yàn)證您是否會(huì)更好地使用 if-else 或使用少數(shù)嵌套 if 而不是開關(guān)。嘗試重新考慮您將擁有多少輸出以及在這種情況下需要執(zhí)行哪些操作。
static void executeSQL(string checkboxes)
{
switches checkbox_switches = new switches(checkboxes.Contains('A'), checkboxes.Contains('B'), checkboxes.Contains('C'), checkboxes.Contains('D'));
if (checkbox_switches.action_A)
{
//Execute SQL
}
else if (checkbox_switches.action_B)
{
//Execute SQL
}
else if (checkbox_switches.action_C)
{
//Execute SQL
}
else if (checkbox_switches.action_D)
{
//Execute SQL
}
else if (checkbox_switches.action_E)
{
//Execute SQL
}
}
struct switches
{
public bool action_A, action_B, action_C, action_D, action_E;
public switches(bool A, bool B, bool C, bool D)
{
action_A = A && B;
action_B = B || D;
action_C = C && D;
action_D = action_A && C;
action_E = !A && !B && !C && D;
}
}

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
我假設(shè)您可能正在嘗試根據(jù)選中的復(fù)選框選項(xiàng)構(gòu)建 where 子句條件。在這里,如果我們嘗試使用 switch 語句,我們可能最終會(huì)為每個(gè)組合編寫很多案例,這不會(huì)是有效的(比如 - a, ab, abc, abcd, ac, acd, ad, b , bc, bcd, bd, c, cd, d)。如果這些值不是按順序排列的,那么該組合將成倍增加。更糟。因此,使用帶有字符串構(gòu)建器的簡單條件語句來保存最終字符串將是有益的,如下所示 -
StringBuilder sb = new StringBuilder();
if (checkbox1.checked)
{
sb.Apppend("Condition1");
}
if (checkbox2.checked)
{
sb.Apppend("Condition2");
}
if (checkbox3.checked)
{
sb.Apppend("Condition3");
}
if (checkbox4.checked)
{
sb.Apppend("Condition4");
}
- 4 回答
- 0 關(guān)注
- 169 瀏覽
添加回答
舉報(bào)