将列表框值转换为逗号分隔的字符串,并带有单引号

时间:2014-10-23 13:57:32

标签: sql asp.net

我有一个包含超过100个项目的列表框我希望这100个项目用逗号分隔,例如:''abc','def''我想在select子句中搜索

 List<string> SelectedValue = new List<string>();
       foreach (ListItem lst in ListBox2.Items)
       {
           if (lst.Selected)
           {

               SelectedValue.Add(lst.Value);
           }
       }
string.Join(",",SelectedValue.Select(x=>string.Format("'{0}'",x)));

它给我错误'最好的重载方法匹配'string.join有一些无效的参数,这里做错了什么

3 个答案:

答案 0 :(得分:0)

我可以建议使用StringBuilder稍微不同的方法,而不是将项目放入List对象吗?无论如何,你正在将这些转换为CSV,所以为什么不像这样构建它......

var SB = new StringBuilder();
foreach (ListItem lst in ListBox2.Items)
   {
       if (lst.Selected)
       {
           SB.Append("'" + list.value + "',");
       }
   }
var FinalString = SB.ToString().Substring(0, (SB.Length - 1));

答案 1 :(得分:0)

您需要将SelectedValue.Select的结果转换为数组:

String result =  string.Join(",", SelectedValue.Select(x => string.Format("'{0}'", x)).ToArray());`

答案 2 :(得分:0)

你linq查询返回类型IEnumerable的结果,你必须将它转换为字符串数组:

List<string> selectedValue = (from ListItem lst in ListBox1.Items 
                              where lst.Selected 
                              select lst.Value).ToList();
//convert to array using ToArray()
string[] arr = selectedValue.Select(x => string.Format("'{0}'", x)).ToArray();
string data = string.Join(",",arr);