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

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

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

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

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

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

非常感谢!

【问题讨论】:

    标签: c# linq list generics 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 的评论有用,几秒钟是相当长的时间,你不知道这是用来做什么的,它很可能是一个瓶颈。此外,此讨论提供了有关可能解决方案的更详细信息,并且具有教育意义。只是我的拙见:)
    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2010-09-18
    相关资源
    最近更新 更多