Método eficiente para imprimir o conteúdo de um Ienumerable
Eu tenho esse "resultado" var que é umIEnumerable
tipo:
Dim result = GetCombinations(TextBox1.Text, StringLength)
Para obter / escrever o conteúdo da variável, eu preciso iterar todos os itens dentro usando um For e, em seguida, converter cada item em uma matriz, assim:
For Each item In result
RichTextBox1.Text += vbNewLine & item.ToArray
Application.DoEvents()
Next
... Então, minha resposta é: Se eu puder melhorar meu código, por exemplo, para unir o conteúdo IEnumerable para fazer algo assim:
RichTextBox1.Text = String.Join(vbNewLine, result) ' This does not work.
Quero dizer, uma coisa "de uma só vez".
Se não, qualquer alternativa melhor (mais rápido) que o For?
ATUALIZAR
Este é o código completo:
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
ATUALIZAÇÃO 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