Pregunta

todavía estoy aprendiendo (pasos de bebé). Perder el tiempo con una función y con la esperanza de encontrar una manera más ordenada para hacer frente a mis tablas de datos.

En las tablas más utilizadas a lo largo de la vida del programa, voy a deshacerse de ellos a tablas de datos y consultas de aquellos en su lugar. Lo que espero hacer es consultar la tablas de datos para la columna digamos x = "este", y convertir los valores de la columna "Y" directamente a una lista para volver a la llamada:

    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;
    }

Alguien sabe un método ligeramente más simple? Creo que esto es bastante fácil, pero me pregunto si no hago lo suficiente de estos si la iteración a través del bucle foreach no será un impacto en el rendimiento. TIA!

¿Fue útil?

Solución

Puede utilizar LINQ para simplificar esto:

public IEnumerable<string> LookupColumnY(string hex)
{
     return tblDataTable
                .Select("Columnx = '" + hex + "'", "Columny ASC")
                .Select(row => row["Columny"].ToString() );
}

Si necesita devolver una lista, puede agregar ToList():

public IList<string> LookupColumnY(string hex)
{
     return tblDataTable
                .Select("Columnx = '" + hex + "'", "Columny ASC")
                .Select(row => row["Columny"].ToString() )
                .ToList();
}

Sin embargo, esto todavía iterate cada fila en la selección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top