giovedì 26 novembre 2009

VB.NET : Aggregare stringhe con LINQ

Tip facile facile, ma a qualcuno potrebbe servire.

Supponiamo di avere una lista di stringhe (magari come risultato di una query LINQ) e di voler ottenere una stringa con la concatenazione delle stesse:

Dim list = CreateList()
Dim concatStr = (From s In list _
                Select s).Aggregate(Function(currentString, nextString) currentString + nextString)
MessageBox.Show(concatStr)


Il metodo CreateList non ci interessa, in questo momento, ma crea una lista di oggetti String.



Protected Function CreateList() As IEnumerable(Of String)
    Dim list As String() = {"stringa1", "stringa2", "stringa3", "stringa4", "stringa5"}
    Return list.AsEnumerable()
End Function


Questo metodo potrebbe restituire una qualsiasi lista di oggetti di cui, nella select successiva recuperiamo solo stringhe.



La stessa tecnica è utilizzabile per concatenare stringhe inserendovi un carattere separatore



Dim list = CreateList()
Dim separator = ";"
Dim concatStr = (From s In list _
                Select s).Aggregate(Function(currentString, nextString) _
                                        currentString + separator + nextString)
MessageBox.Show(concatStr)


Attenzione perché Aggregate() non funziona con LINQ to SQL.



 





Nessun commento: