在C#.NET中将字符串列表转换为单个引号列表

时间:2011-03-15 06:03:15

标签: c# .net linq

我有字符串列表。我想将它的每个元素转换为单引号字符串(即“ABC” - >'ABC'),如何在.net中执行此操作。

谢谢, OMKAR

4 个答案:

答案 0 :(得分:1)

Linq可以在这里提供帮助。

var newList = oldList.Select(c => c.Replace("\"", "'"));

答案 1 :(得分:1)

这已经得到了很好的回答。但是,我预感到您正在使用C#中的字符串列表,然后尝试构建一个用于IN语句的SQL表达式,例如:

SELECT * FROM table WHERE name IN ('John','Mary','Peter')

在这种情况下,您需要将字符串连接在一起,并通过将任何单引号字符加倍来防止代码注入攻击。

StringBuilder sb = new StringBuilder();
foreach (string entry in list) {
  if (sb.Length > 0) sb.Append(",");
  sb.Append("\'" + entry.Replace("'","''") + "\'");
}
string expr = sb.ToString();

当列表为空时,您还需要处理特殊情况,因为IN ()不是SQL的有效语法。

如果这不是您想要的,请忽略我。 : - )

答案 2 :(得分:0)

如果您想用单引号替换所有双精度数,只需执行以下操作:

myString = myString.Replace( "\"", "'" );

但是,请注意'在C#中不是有效的字符串分隔符,因此您不能拥有字符串'ABC',但是您可以拥有包含文本的字符串"'ABC'" 'ABC'

编辑

当看到杰夫的回答时,我看到你想要一份清单。在这种情况下,他的答案几乎正确 - 请尝试使用此变体:

var convertedList = myStringList.Select(s => s = s.Replace("\"", "'").ToList();

答案 3 :(得分:0)

我假设你有常规字符串s到's'(带引号的字符串),你想要一个List<>转换。

        List<string> stringList = new List<string>();
        //Fill the list with strings here.
        var query = from str in stringList
                    select string.Format("\'{0}\'", str);

        List<string> quotedList = query.ToList<string>();