C#修改字符串列表而不进行迭代

时间:2013-02-23 17:06:20

标签: c# string foreach ienumerable

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

感谢。

7 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

最简单的方法是通过linq:

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

答案 2 :(得分:3)

您可以使用LINQ而不是foreach循环:

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

答案 3 :(得分:1)

您可以将LINQ用于此目的。这样的事情可能有用:

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

答案 4 :(得分:1)

简单回答:你不能


你必须以某种方式执行迭代。

可能是:

foreach
for
List.ForEach

答案 5 :(得分:1)

你可以写

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

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

答案 6 :(得分:1)

这将起作用

List<string> newList = new List<string>();

mylist.ForEach((item)=>
  {
    item=item.Replace("mph",""); 
    newlist.Add(item);
  });