.NET: метод для вставки строки в начало каждого элемента в коллекции? - PullRequest
0 голосов
/ 03 мая 2019

Допустим, у меня есть коллекция 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

Мне интересно, есть ли однострочный метод для этого? Вроде как:

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

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

Тогда у меня будет новый отсортированный список с полным путем к файлу в качестве каждого элемента.

Прошло некоторое время с тех пор, как я закодировал в PHP, но, занимаясь памятью, я думаю, Array_Walk() сделал что-то вроде того, что я собираюсь сделать.

Ответы [ 3 ]

1 голос
/ 04 мая 2019

Это немного хакерски, но вы можете попробовать что-то вроде:

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

Это сработало для меня, но, вероятно, не принесло никакого выигрыша в производительности по сравнению с простой проповедью коллекции.

0 голосов
/ 04 мая 2019

Решение 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()
0 голосов
/ 03 мая 2019

Вы можете, если используете Linq.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...