Sulla Programmazione

Quattro chiacchere sulla programmazione e sulle bit-tecnologie con Fabrizio Cipriani

Conversione di array e liste in stringhe csv (comma separated)

Mi trovo spesso a dover convertire liste, collections o array in stringhe con valori separati da virgola (csv). Con LINQ, questo può essere fatto in modo elegante ed efficiente su qualsiasi collection che implementi IEnumerable usando il metodo Join() della classe string:

string csvString = string.Join(",", from item in MyList select item.Value);

oppure per .net 3.5:

string csvString = string.Join(",", (from item in MyList select item.Value).ToArray());

Per le versioni precedenti di .Net che non supportano LINQ (< 3.5), il metodo più efficiente è usare la classe StringBuilder:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
private string GetCsvString(List<MyType> MyList)
{  
    StringBuilder sb = new StringBuilder();  
    String sep = ",";

    foreach (MyType item in MyList)  
    {    
        sb.Append(item.Value);    
        sb.Append(sep);  
    }  
    return sb.ToString().Remove(sb.Length - 1, 1);
}

Comments