簡體   English   中英

如何在不創建新列表的情況下重命名列表中的值?

[英]How to rename value in a List without creating a new one?

我有一個字符串List<string> blobsToCopy

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

如何在不創建新IEnumerable<string>情況下更改blobsToCopy所有值?

您無需使用LINQ,只需使用簡單的for循環並將每個項目替換為其修改后的版本即可。

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

除非我缺少明顯的東西,否則良好的老式for循環怎么了?

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

好吧,字符串是不可變的,因此您不能直接編輯它們。 相反,您可以使用blobsToCopy[i]編輯列表。 這將使您的列表保持完整,並讓您編輯列表元素所指向的字符串。

也許您可以使用ForEach linq實現。 目前沒有ac#編譯器可用,因此我無法對其進行測試。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM