Wydajna metoda drukowania treści niezliczonych
Mam ten „wynik” var, który jest aIEnumerable
rodzaj:
Dim result = GetCombinations(TextBox1.Text, StringLength)
Aby pobrać / zapisać zawartość zmiennej, muszę wykonać iterację wszystkich elementów wewnątrz za pomocą polecenia For, a następnie przekonwertować każdy element na tablicę, tak jak poniżej:
For Each item In result
RichTextBox1.Text += vbNewLine & item.ToArray
Application.DoEvents()
Next
... Więc moja odpowiedź brzmi: Czy mogę poprawić swój kod, na przykład, aby dołączyć do treści IEnumerable, aby zrobić coś takiego:
RichTextBox1.Text = String.Join(vbNewLine, result) ' This does not work.
Mam na myśli rzecz „za jednym zamachem”.
Jeśli nie, jakakolwiek alternatywa lepiej (szybciej) niż For?
AKTUALIZACJA
Oto pełny kod:
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
AKTUALIZACJA 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