Эффективный метод для печати содержимого Ienumerable
У меня есть этот «результат» Вар, который являетсяIEnumerable
тип:
Dim result = GetCombinations(TextBox1.Text, StringLength)
Чтобы получить / записать содержимое переменной, мне нужно перебрать все элементы внутри, используя For, а затем преобразовать каждый элемент в массив, например так:
For Each item In result
RichTextBox1.Text += vbNewLine & item.ToArray
Application.DoEvents()
Next
... Итак, мой ответ: если я могу улучшить свой код, например, чтобы присоединиться к контенту IEnumerable, чтобы сделать что-то вроде этого:
RichTextBox1.Text = String.Join(vbNewLine, result) ' This does not work.
Я имею в виду, вещь "за один раз".
Если нет, какая-либо альтернатива лучше (быстрее), чем For?
ОБНОВИТЬ
Это полный код:
Private Shared Function GetCombinations(Of T)(list As IEnumerable(Of T), length As Integer) As IEnumerable(Of IEnumerable(Of T))
If length = 1 Then
Return list.[Select](Function(x) New T() {x})
Else
Return GetCombinations(list, length - 1).SelectMany(Function(x) list, Function(t1, t2) t1.Concat(New T() {t2}))
End If
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
RichTextBox1.Clear()
Dim result = GetCombinations("abc", 5)
' Dim result2 As IEnumerable(Of String) = result.Select(Function(item) New String(item))
' RichTextBox1.Text = String.Join(vbNewLine, result)
For Each item In result
RichTextBox1.Text &= vbNewLine & item.ToArray
' Application.DoEvents()
Next
End Sub
ОБНОВЛЕНИЕ 2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Method result
Dim result As IEnumerable = Permute_Characters("abc", 2)
' Combine strings into lines
' Dont work
RichTextBox1.Text = String.Join(Environment.NewLine, result.ToString.ToArray)
End Sub