Come compilare List con i valori DataRow da singole colonne
Domanda
Sto ancora imparando (piccoli passi). Giochi per bambini con una funzione e nella speranza di trovare un modo più ordinato a che fare con i miei datatables.
Per le tabelle più comunemente utilizzato per tutta la durata del programma, io li dump per DataTable ed interrogare quelli invece. Quello che sto sperando di fare è interrogare i DataTable per colonna diciamo x = "questo", e convertire i valori della colonna "y" direttamente a un elenco per tornare al chiamante:
private List<string> LookupColumnY(string hex)
{
List<string> stringlist = new List<string>();
DataRow[] rows = tblDataTable.Select("Columnx = '" + hex + "'", "Columny ASC");
foreach (DataRow row in rows) { stringlist.Add(row["Columny"].ToString()); }
return stringlist;
}
Qualcuno sa un metodo leggermente più semplice? Credo che questo è abbastanza facile, ma mi chiedo se lo faccio abbastanza di questi se l'iterazione tramite foreach ciclo non sarà un calo di prestazioni. TIA!
Soluzione
È possibile utilizzare LINQ per semplificare questo:
public IEnumerable<string> LookupColumnY(string hex)
{
return tblDataTable
.Select("Columnx = '" + hex + "'", "Columny ASC")
.Select(row => row["Columny"].ToString() );
}
Se è necessario restituire un elenco, è possibile aggiungere ToList()
:
public IList<string> LookupColumnY(string hex)
{
return tblDataTable
.Select("Columnx = '" + hex + "'", "Columny ASC")
.Select(row => row["Columny"].ToString() )
.ToList();
}
Tuttavia, questo sarà ancora iterate ogni riga della selezione.