【问题标题】:C# modify list of string without iteratingC#修改字符串列表而不迭代
【发布时间】:2013-02-23 17:06:20
【问题描述】:

我有一个从第 3 方返回给我的列表。列表中的每个字符串都以“mph”结尾,我想删除“mph”。显而易见的答案是遍历列表,但我不知道是否有更有效的方法来做到这一点。

谢谢。

【问题讨论】:

  • 不管怎样,你必须执行一次迭代!

标签: c# string foreach ienumerable


【解决方案1】:

总之,不。 有些东西 必须通过列表才能修改它。 for 循环可能是最有效的方法,但不一定是最简洁的

【讨论】:

    【解决方案2】:

    您必须遍历列表才能触摸每个项目并进行更改。

    最简单的方法是通过 linq:

      var originallist = new List<string> { "50mph", "35mph", "100mph" };
      var newlist = list.Select(s => s.Substring(0, s.Length - 3));
    

    【讨论】:

      【解决方案3】:

      您可以使用 LINQ 代替 foreach 循环:

      list.Select( s => s.Substring(0, s.Length - 3) )
      

      【讨论】:

      • -1 功能错误;P。不幸的是,ForEach 不存在,也不接近它的名称。好的,我解开了 -1
      • 它确实存在:msdn.microsoft.com/en-us/library/bwabdf9z.aspx,但我只是想错了功能。固定。
      • 对不起。哇,我学到了新东西。有点奇怪,他们在 List 中有这个,但在 linq 中没有。它也困扰着我,有一个在列表中查找,但 linq 中的等价物首先是哪种让我感到困惑。 +1
      • 是的,如果字符串不是不可变的,那么对于许多类型的操作可能会更有效。不过看这篇文章:blogs.msdn.com/b/ericlippert/archive/2009/05/18/…
      • @AndrewMao:恕我直言,少写代码也是一种“效率”:)
      【解决方案4】:

      您可以为此目的使用 LINQ。这样的事情可能有效:

      var noMph = theList.Select(p => p.Replace("mph", "").ToList();
      

      【讨论】:

      • 请注意,这并不比for 循环更“有效”。事实上,它可能效率较低。
      • 好吧,至少它在你必须编写的代码量方面更有效率:)
      【解决方案5】:

      简单的答案:你不能


      您必须以一种或另一种方式执行迭代。

      可能是:

      foreach
      for
      List.ForEach
      

      【讨论】:

        【解决方案6】:

        你可以写

        mylist.Select(s=>s.Substring(0, s.Length-3));//Can add .ToList() here
        

        但那是使用循环。您至少不必编写 foreach :)

        【讨论】:

        • @AndrewMao:哈哈哈哈,废话,已修复:)。 -edit- 很有趣,这总是让我得到真正的代码,直到我运行并在屏幕上看到错误
        • 还将substring 修复为Substring :)
        【解决方案7】:

        这会起作用

        List<string> newList = new List<string>();
        
        mylist.ForEach((item)=>
          {
            item=item.Replace("mph",""); 
            newlist.Add(item);
          });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-05
          • 1970-01-01
          • 2014-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-14
          • 2018-04-10
          相关资源
          最近更新 更多