C# 为IEnumerable的每个成员添加前缀/后缀<;字符串>;在C中#

C# 为IEnumerable的每个成员添加前缀/后缀<;字符串>;在C中#,c#,string,ienumerable,prefix,C#,String,Ienumerable,Prefix,有没有一种简单的方法可以为IEnumerable的每个成员添加前缀或后缀?我想不出另外一种方法(输入是IEnumerable的): 但这不会让我分配回str。。。我觉得应该有更好的方法来做到这一点。这应该有效: var result = inputs .Select(x => prefix + x) .ToList(); 它只需为前缀前的每个输入创建一个新字符串,然后将它们放入列表中。对于后缀,只需将前缀+x更改为x+后缀,字符串是不可

有没有一种简单的方法可以为IEnumerable的每个成员添加前缀或后缀?我想不出另外一种方法(输入是IEnumerable的):

但这不会让我分配回str。。。我觉得应该有更好的方法来做到这一点。

这应该有效:

var result = inputs
             .Select(x => prefix + x)
             .ToList();

它只需为前缀前的每个输入创建一个新字符串,然后将它们放入列表中。对于后缀,只需将
前缀+x
更改为
x+后缀
,字符串是不可变的,因此您不能随时修改它们。您可以返回一个新的列表,不过:

IEnumberable<String> AppendString (IEnumerable<String> src, String append)
{
   foreach (String str in src)
      yield return str + append;
}
IEnumerable AppendString(IEnumerable src,String append)
{
foreach(src中的字符串str)
收益率返回str+append;
}

值得一提的是,您的代码有两个错误:

  • 您的
    str
    变量在foreach循环中应该是只读的,并且您不能分配给它,因为字符串是不可变的,并且当您调用
    sb.Append(prefix).Append(str).ToString()时创建一个新字符串
    
  • 对于此类任务,您不需要
    StringBuilder
    ,因为对一个字符串执行多个串联操作时效率很高。在本例中,有几个字符串,每个字符串只需与某个变量连接一次

  • 您可以随时添加到它们中。您只需分配结果。@SimonC,我想很清楚我的意思是“就地”添加(修改原始字符串),所以您需要返回一个新列表。我已经编辑,试图使这更清楚,请让我知道你的想法。很抱歉给您带来了困惑。谢谢!这很好用,我不知道为什么我没有看到,太长的一天。。。
    IEnumberable<String> AppendString (IEnumerable<String> src, String append)
    {
       foreach (String str in src)
          yield return str + append;
    }