使用单引号将多行逗号分隔的文本框值转换为

使用单引号将多行逗号分隔的文本框值转换为

问题描述:

我有一个代码,它将多个选定的项目从列表框中转换为逗号分隔值的单个行。现在我想在多行文本框中实现同样的事情,在多行文本框中,值将像a​​bc,def,pqr现在我想分开它在数据库'abc','def','pqr'中进行搜索。下面的代码我使用是用于列表框如何修改它,这样我可以使用它的文本框目的使用单引号将多行逗号分隔的文本框值转换为

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

你能详细说明你的代码“不起作用”吗?你在期待什么,究竟发生了什么?如果您遇到异常,请发布它发生的行和异常详细信息。 – gunr2171 2014-10-26 22:19:48

+0

此代码对于列表框选择工作正常。我想用多行文本框达到同样的效果 – user3074125 2014-10-27 05:09:00

String.Join(",", txt.Lines.Select(s => "'" + s + "'")) 

的string.join是获取的隔膜作为第一个参数,字符串的序列的方法作为第二。它解决了开箱即用的问题,更重要的是解决了当用循环进行时最烦人的“最后逗号”问题。您可以将此方法用于列表框代码。

第二个参数将字符串数组映射到相同的字符串并添加单引号。基本上它需要一堆字符串并将转换应用到它们中的每一个并返回一堆转换后的字符串。该转换在lambda表达式中表示。

+0

现在好了吗? – Stilgar 2014-10-27 07:36:54

+0

@Stilgar:我想通过使用文本框来实现这一点。在一个简单的方法我的文本框获取值abc,def,pqr我希望这是作为'abc','def','pqr'我希望这将它添加到一个选择语句 – user3074125 2014-10-27 13:33:44

+0

首先,我已经给你这样做的代码(假设您使用的文本框的Multiline属性设置为true),然后您不这样做来获取值到SQL中,因为系统将容易受到SQL注入 – Stilgar 2014-10-27 14:41:27

原来的答案是非常好的。但是请注意,在修改每个输入串的选择是简单的构造加入文字是不同的:

"'" + string.Join("','", txt.Lines) + "'" 

这样,有创建较少的中间目标(否Select()迭代器,只是一个string.Concat()额外调用,而不是一个每个枚举元素)。在大多数情况下,两者之间没有可衡量的差异,但有些人可能更喜欢这种方法(毕竟,代码有点短)。