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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top