如何在不创建新值的情况下重命名List中的值?

时间:2016-06-07 12:52:57

标签: c#

我有一个字符串列表List<string> blobsToCopy

var newList = blobsToCopy.Select(GetDiskNameWithoutFolder);
private static string GetDiskNameWithoutFolder(string path) {...}

如何更改blobsToCopy中的所有值而不创建新的IEnumerable<string>

4 个答案:

答案 0 :(得分:6)

您不使用LINQ,只需使用简单的for循环并用修改后的版本替换每个项目。

for (var i = 0; i < blobsToCopy.Count; i++)
{
     blobsToCopy[i] = GetDiskNameWithoutFolder(blobsToCopy[i]);
}

答案 1 :(得分:1)

除非我错过了一些明显的东西,否则一个好的老式循环又有什么不妥?

for(var i=0; i < blobsToCopy.Count;i++)
{
    // do whatever....
}

答案 2 :(得分:1)

嗯,字符串是不可变的,所以你不能直接编辑它们。相反,您可以使用blobsToCopy[i]修改列表。这将使您的列表保持不变,并允许您编辑列表元素指向的字符串。

答案 3 :(得分:0)

也许您可以使用ForEach linq实现。目前没有可用的c#编译器,所以我无法测试它。

list.ForEach(c => c = GetDiskNameWithoutFolder(c));