gacar Ответов: 2

Как список (список целых чисел)) в строку с помощью функции string.метод соединения?


У меня есть List3 как List(Of List(Of Integer))
Dim List3 As New List(Of List(Of Integer))
Dim List1 As List(Of Integer) = {1, 2, 5, 7}.ToList
Dim List2 As List(Of Integer) = {5, 3, 2, 1}.ToList
List3.Add(List1)
List3.Add(List2)


Как я могу получить такую строку
1,2,5,7 
5,3,2,1


Что я уже пробовал:

Dim str As String = String.Join(vbNewLine, List3)

2 Ответов

Рейтинг:
8

Richard Deeming

Более простое решение с использованием LINQ:

Dim str As String = String.Join(vbNewLine, List3.Select(Function (list) String.Join(",", list)))
Лямбда-Выражения (Visual Basic) | Microsoft Docs[^]


Maciej Los

5ed!

phil.o

5 бы тоже.
Сейчас я так много времени оставил VB, дженерики еще не существовали; когда мне нужно написать какой-то блок кода в VB, я думаю об этом в c# и должен пройти через мысленный процесс перевода. Не говоря уже о Линке... Спасибо, Ричард.

Richard Deeming

То же самое и здесь - я не сделал ничего серьезного VB.NET работаю уже более 15 лет. :)

gacar

Вот это да! Большое спасибо.

Рейтинг:
1

phil.o

Вы должны повторить коллекцию и отформатировать выходные данные:

Imports System.Collections.Generic
Imports System.Linq
Imports System.Text

Public Shared Function DumpListOfList(Of T)(List(Of List(Of T)) list) As String
   Dim builder As New StringBuilder()
   For Each sublist As List(Of T) In list
      builder.AppendLine(String.Join(",", sublist.ToArray()))
   Next
   builder.Remove(builder.Length - 2, 2) '' Get rid of the last CrLf
   Return builder.ToString()
End

'' Usage:
Dim result As String = DumpListOfList(List3)


Maciej Los

5ed!