Как добавить символ в начало каждой строки в списке строк

#vb.net #list

#vb.net #Список

Вопрос:

У меня есть простой список строк, и что мне нужно сделать, это добавить «@» в начало каждого элемента и присоединиться к списку, чтобы получить что-то вроде: «@item1, @item2, ….»

мой код до сих пор:

     Dim list As New List(Of String)({"item1", "item2", "item3", "item4"})

    ' create a copy of list to prevent altering it
    Dim listCopy As List(Of String) = list

    For i As Integer = 0 To listCopy.Count - 1
        list(i) = "@" amp; listCopy(i)
    Next

    Dim result As String = String.Join(", ", list.ToArray())
  

Хотя это и выполняет свою работу, но я чувствую, что это слишком много кода для простой функции, то же самое можно сделать в python или javascript намного проще, например:

python:

 copyList = [("@"   x) for x in list]
  

javascript:

 copylist = list.map(function(x){return '@'   x})
  

Есть ли аналогичная функция в vb.net ?

Ответ №1:

Да, вы можете использовать метод LINQ Select для достижения этой цели:

 Dim list As New List(Of String)({"item1", "item2", "item3", "item4"})
dim list1 = list.Select(function (i) "@"   i)
for each item in list1
    Console.WriteLine(item)
next item
  

И на выходе получается:

 @item1
@item2
@item3
@item4
  

Результатом является IEnumerable (Of String) объект. Если вы хотите снова List (Of String) использовать ToList() метод расширения:

 dim list1 = list.Select(function (i) "@"   i).ToList()
  

Комментарии:

1. Рад, что ответ помог. LINQ to Objects обладает множеством функциональных преимуществ.

Ответ №2:

Используйте LINQ:

 Dim result = (From s In list Select "@" amp; s)
  

Комментарии:

1. мне не нужно определять тип результата, например: Dim result As List(Of String) ?

2. Просто для ясности, результат IEnumerable(Of String) , и нет, вы этого не делаете. Даже при включенной опции strict.