-1

对不起,我仍然是 C# n00b。我有这个代码,它将从我的控件中检索项目。问题是,最终的 SQL 字符串有点偏离。我的 s2 变量中有一个额外的逗号。

这是我的代码隐藏:

protected void btnSubmit_OnClick(object sender, EventArgs e)
{
    //String with all selected items in ListBox lstFilter
    var selectedQuery = lstFilter.Items.Cast<ListItem>().Where(item => item.Selected);
    string txtlstFilter = String.Join("','", selectedQuery).TrimEnd();

    //String with all selected items in CheckBoxList cbFields1
    string s1 = string.Empty;
    new List<ListItem>(cbFields1.Items.Cast<ListItem>().Where(i => i.Selected)).ForEach(x => s1 += string.Format("{0}, ", x.Value));

    //String with all selected items in CheckBoxList cbFields2
    string s2 = string.Empty;
    new List<ListItem>(cbFields2.Items.Cast<ListItem>().Where(j => j.Selected)).ForEach(y => s2 += string.Format("{0}, ", y.Value));
 //   textBox1.Text = s;  

    var strSQL = "SELECT " + s1 + s2 + " FROM vwClaimRoster WHERE " + cboFilterOption.SelectedValue + " in ('" + txtlstFilter + "');";

}

这就是 strSQL 的最终结果(基于我选择的内容):

“SELECT MgrName、Division、Routing、Dept、ExpCtr、State、EEName、Argus、CCP、ChkRework、来自 vwClaimRoster 的 Dept in ('Account ADVOCACY'、'BILLING CONTROL'、'CCF CLAIM');”

如您所见,我需要删除字段列表中的最后一个逗号(ChkRework 之后的那个)。

任何帮助,将不胜感激!

4

1 回答 1

1

对于第一部分,用于Union加入 ListItems,然后string.Join获取以逗号分隔的列表(而不是ForEach):

string selectList = string.Join(", ", 
     cbFields1.Items.Cast<ListItem>()
         .Union(cbFields2.Items.Cast<ListItem>())
         .Where(i => i.Selected)
         .Select(x => x.Value)
 );

对于第二部分,只需将单引号添加到string.Join,以及之前/之后:

string strSQL = "SELECT " + selectList + " FROM vwClaimRoster WHERE " + cboFilterOption.SelectedValue
    " in ('" + String.Join("','", selectedQuery).TrimEnd() + "');";
          ^                 ^ ^                               ^
于 2013-07-22T18:06:07.130 回答