Sto avendo una scoreggia cerebrale cercando di rendere il seguente metodo più generico in modo tale che qualsiasi List<T>
possa essere passato per il parametro columnValues
. Ecco quello che ho:Come posso rendere questo metodo di estensione più generico?
public static DataRow NewRow(this DataTable dataTable, List<string> columnValues)
{
DataRow returnValue = dataTable.NewRow();
while (columnValues.Count > returnValue.Table.Columns.Count)
{
returnValue.Table.Columns.Add();
}
returnValue.ItemArray = columnValues.ToArray();
return returnValue;
}
ho potuto cambiarlo in un List<object>
e convertire l'elenco originale prima di passarlo al metodo, ma sono sicuro che ci sia una soluzione migliore :-)
Edit :
Il post di Frank mi ha fatto ripensare a questo. Nella maggior parte dei casi, tale origine List<T>
sarebbe un List<object>
poiché i valori delle colonne saranno probabilmente di tipi diversi.
Per il mio utilizzo iniziale uno List<string>
aveva senso perché stavo creando un set di dati da un parsing CSV che è tutto il testo in quel punto.
Lol sei punto è eccellente e non l'avevo considerato. Per il mio uso iniziale una lista aveva senso perché stavo creando un set di dati da un parsing CSV che è tutto il testo in quel punto. Per la maggior parte degli altri usi questo non avrebbe senso dato che i valori delle colonne molto probabilmente saranno di tipo diverso. –