.NET:将字符串插入集合中每个项目开头的方法?

时间:2019-05-03 20:26:12

标签: c# string vb.net replace collections

假设我有一个SortedList字符串集合(尽管通常任何集合类型都应该相同),而且它们都是文件名...

现在,我想在该集合中的每个项目后面附加(insert,位置0)相同的完整文件路径。

而不是进行For Each循环,就像这样:

For Each entry As KeyValuePair(Of String, String) In mySortedList
  entry.Value = entry.Value.Insert(0, "C:\some\path\")
Next

我想知道是否有一种方法可以做到这一点? Kinda遵循以下原则:

' Pseudo code (I know its wrong, just demonstrating the idea)

mySortedList = mySortedList.Items.Insert(0, "C:\some\path\")

然后我将有一个新的排序列表,其中包含每个项目的完整路径。

自从我用PHP编码以来已经有一段时间了,但是在内存上,我认为Array_Walk()所做的事情与我要执行的操作类似。

3 个答案:

答案 0 :(得分:1)

这有点骇人听闻,但您可以尝试以下方法:

var newFilenames = mySortedList.Values.Cast<string>().Select(s => s.Insert(0, @"C:\some\path\"));

这对我有用,但是它可能不仅仅带来了集合方面的性能提升。

答案 1 :(得分:0)

如果使用Linq,则可以。

list.Select(s => "C:\some\path\" + s);

答案 2 :(得分:0)

VB解决方案:

Dim list As List(Of String) = New List(Of String) From {"path one", "Path two", "Path three"}

list = list.Select(Function(s) s.Insert(0, "C:\some\path\")).ToList()