C# 使用 LINQ 将 List<string> 的所有元素替换为相同的模式

Posted

技术标签:

【中文标题】C# 使用 LINQ 将 List<string> 的所有元素替换为相同的模式【英文标题】:C# Replace all elements of List<string> with the same pattern with LINQ 【发布时间】:2013-05-30 18:56:25 【问题描述】:

我有一个包含数千个字符串的 C# 列表:

"2324343"
"6572332"
"45122" ...

我想用括号替换它们,所以它们看起来像

"(2324343)"
"(6572332)"
"(45122)" ...

我知道如何编写一个 for 循环并执行此操作,但我想知道是否有办法最好使用 LINQ 和 LAMBDA 表达式来执行此操作。我也愿意接受其他建议。

非常感谢!

【问题讨论】:

【参考方案1】:
var resultList = list.Select(x => string.Format("(0)", x)).ToList();

【讨论】:

如果真的有数千个字符串,而你只想在它们周围加上括号,我不会使用string.Format,只需使用'(' + x + ')'string.Format 可以处理很多不同的格式(甚至可以扩展)。 IIRC,放置 "(" + x + ")" 本质上会将其转换为 String.Concat 调用,这本身就非常有效。编辑:刚刚注意到char 与单引号的使用;我不会亲自这样做。我只是坚持使用字符串。 :) @Alxandr 看到 IL,你会感到惊讶) 这个“性能”讨论是我一段时间以来看到的最愚蠢的事情之一,从第一条评论开始。这段代码不太可能成为瓶颈。因此,任何花在优化上的时间都被浪费了。尽管“3 倍”的速度提升似乎令人印象深刻,但我们所说的 1000 万次迭代可能需要 4 秒。没有人会注意到差异。永远。 我不认为@JimMischel 的评论有用,几秒钟是相当长的时间,你不知道这是用来做什么的,它很可能是一个瓶颈。此外,此讨论提供了有关可能解决方案的更详细信息,并且具有教育意义。只是我的拙见:)

以上是关于C# 使用 LINQ 将 List<string> 的所有元素替换为相同的模式的主要内容,如果未能解决你的问题,请参考以下文章

使用 LINQ 将 List<U> 转换为 List<T>

转载C#使用ToList()将数组快速转换为List集合

c# linq 汇总

在 C# 中使用 LINQ 解析 XML

C# Linq获取两个List或数组的差集交集

C# Linq 交集并集差集去重