C# 字符串连接:代码改进

C# 字符串连接:代码改进,c#,.net,string,concatenation,C#,.net,String,Concatenation,我目前有一个名为docIds的列表(字符串),看起来有点像: {A3001,A40001,BF0003,13458} 它只包含字母和数字。我希望按如下方式输出该数组(用于DQL查询) 当然,我使用了String.Join方法 String.Join(",",docIds.ToArray()) Output: A3001,A40001,BF0003,13458 我知道有2种(非性能)方法可以添加这些引号 方法1: 在字符串.Join之前,迭代列表中的每个字符串并添加引号 方法2: 以下字符串

我目前有一个名为
docIds
列表(字符串)
,看起来有点像:

{A3001,A40001,BF0003,13458}
它只包含字母和数字。我希望按如下方式输出该数组(用于DQL查询)

当然,我使用了
String.Join
方法

String.Join(",",docIds.ToArray())
Output: A3001,A40001,BF0003,13458
我知道有2种(非性能)方法可以添加这些引号

  • 方法1: 在
    字符串.Join
    之前,
    迭代列表中的每个字符串并添加引号
  • 方法2: 以下字符串操作:

        "'" + String.Join(",",docIds.ToArray()).Replace(",","','") + "'"
    
问题:是否有更有效/更恰当的方法来实现预期结果?

您可以使用LINQ:

string.Join(",", docIds.Select(id => string.Format("'{0}'", id)));
此重载是在.NET 4.0中添加的,在您需要添加
ToArray
以创建
字符串[]

之前,您可以使用LINQ:

string.Join(",", docIds.Select(id => string.Format("'{0}'", id)));

此重载是在.NET 4.0中添加的,在您需要添加
ToArray
以创建
string[]

之前,如果您使用字符串串联来连接大量字符串,最好使用
StringBuilder
以获得更好的性能。即使字符串已经存储在列表中,在上面的示例中,也不需要
docid
上的
ToArray()
String.Join
必须使用IEnumberable。使用
ToArray
,您可以添加在调用函数之前必须完成的额外工作。如果您正在将连接的字符串存储到另一个字符串变量中。@crashmstr:谢谢您的提示!我不知道!谢谢你向我指出这一点。我不知道,看起来我有一些修改要做:)如果您使用字符串连接来连接大量字符串,最好使用
StringBuilder
以获得更好的性能。即使字符串已经存储在列表中,也不需要
ToArray()
在上述示例中的
docid
String.Join
必须使用IEnumberable。使用
ToArray
,您可以添加在调用函数之前必须完成的额外工作。如果您正在将连接的字符串存储到另一个字符串变量中。@crashmstr:谢谢您的提示!我不知道!谢谢你向我指出这一点。我不知道,看起来我有一些修改要做:)漂亮,绝对漂亮!工作起来很有魅力,在我的代码中看起来也更好!只要你允许,我会尽快接受答案!漂亮,绝对漂亮!工作起来很有魅力,在我的代码中看起来也更好!只要你允许,我会尽快接受答案!