Cómo crear listas de tuplas para almacenar datos en memoria. Como ejemplo conectaremos con un servidor MySQL, ejecutaremos una consulta SQL y los registros que se obtienen se almacenan en una lista de tuplas (en memoria). Además, como ejemplo también se instancia una clase a la que se le pasa como parámetro la lista de tuplas y la guarda en un fichero de texto CSV.

Requisitos para trabajar con listas, tuplas y listas de tuplas en C#

El único requisito es disponer del IDE de desarrollo Visual Studio .Net, en nuestro caso usaremos la versión gratuita Visual Studio .Net Commnuty Edition. En el siguiente enlace explicamos cómo descargarlo e instalarlo:

En el caso de querer guardar el contenido de una tabla de una base de datos (o de la ejecución de una consulta SQL), evidentemente necesitaremos tener acceso al servidor de base de datos. En el ejemplo de este tutorial accederemos a un servidor de base de datos MySQL. Para ello deberemos tener la dirección IP del servidor (o el nombre DNS), un usuario y una contraseña.

Para el caso de acceso a MySQL Server desde C#, podremos seguir las instrucciones del siguiente manual:

Desarrollar aplicación C# con acceso nativo a MySQL Server mediante ADO.NET.

Las tuplas (Tuple) en C#

Una tupla es una estructura de datos que tiene un número específico y una secuencia de valores. Admite elementos de diferentes tipos de datos (string, DateTime, int, etc.).

Las tuplas se utilizan normalmente para:

  • Representar un único conjunto de datos. Por ejemplo, una tupla puede representar un registro de base de datos y sus componentes pueden representar campos (columnas) individuales del registro.
  • Facilitar el acceso y la manipulación de un conjunto de datos.
  • Devolver varios valores de un método sin usar out para paso de parámetros por referencia en C# o ByRef para paso de parámetros por referencia en Visual Basic.

En una tupla, por ejemplo, se puede almacenar el resultado de la ejecución de una consulta SQL que devuelve registros de una tabla. Esto nos permitirá utilizar esta tupla con los datos de los registros «en memoria» para otros métodos de nuestra aplicación, entre otras cosas.

Hay varias formas de crear tuplas, algua de ellas:

El resultado de la ejecución del código anterior:

Las tuplas (Tuple) en C#

La declaración de una tupla admite, como máximo, ocho campos (óctupla).

Los datos contenidos en una tupla son invariables, no se pueden modificar una vez creada y asignados sus valores.

Listas (List) en C#

Representa una lista de objetos fuertemente tipados a la que se puede obtener acceso por índice. Proporciona métodos para buscar, ordenar y manipular listas.

Para el caso de este artículo usaremos una lista de tuplas, de forma que podremos almacenar un número indefinido de tuplas dentro de una lista. Esto nos permitirá, como veremos más adelante, poder almacenar el resultado de una consulta SQL en una lista de tuplas.

Un ejemplo de creación de una lista y manipulación de sus datos (agregar elementos, recorrerlos, etc.):

El resultado de la ejecución del código anterior:

Listas (List) en C#

Lista de tuplas en C#

Tras conocer las tuplas y las listas, ahora usaremos la «potencia» de ambas estructuras de datos para «unirlas», de esta forma podremos tener listas de tuplas, como si de registros de una base de datos se tratase.

A continuación mostramos un ejemplo de declaración de una lista de tuplas con cuatro campos (columnas, elementos), le agregamos valores (registros) y los mostramos por pantalla:

El resultado de la ejecución del código anterior:

Lista de tuplas en C#

Guardar registros de consulta SQL de tabla de base de datos en memoria en una lista de tuplas y en fichero CSV con C#

Tras conocer las tuplas, las listas y las lista de tuplas, vamos a mostrar un ejemplo de código fuente en C# que accede a una base de datos MySQL Server, ejecuta una consulta SQL y, los registros que obtiene de dicha ejecución, los almacena en una lista de tuplas (en memoria). Además, también almacena la lista de tuplas en un fichero de texto CSV.

A continuación se muestra el código fuente en C# de la clase principal formPrincipal. Dicho formulario tiene los siguientes componentes:

Guardar registros de consulta SQL de tabla de base de datos en memoria en una lista de tuplas y en fichero CSV con C#

El código fuente completo puede descargarse aquí, a continuación se lista el código fuente de la clase formPrincipal, que incluye incluye comentarios en las líneas más importantes, explicando su cometido:

Se crea una clase llamada ListaTuplasRegistrosMemoria con el siguiente código C#:

La aplicación de ejemplo en ejecución realiza las siguientes tareas:

  • Realizará una conexión con un servidor de base de datos MySQL. Para la prueba de la aplicación los datos de conexión se pasan por código.
  • Se ejecuta una consulta SQL, que también se pasa por código.
  • Los registros que devuelve la ejecución de la consulta SQL se almacenan en una lista de tuplas, en memoria.
  • Se instancia una clase de ListaTuplasRegistrosMemoria como ejemplo de paso de parámetro de la lista de tuplas en memoria.
  • Dicha clase guardará en fichero CSV (con valores separados por comillas dobles y comas) la lista de tuplas.

En la siguiente imagen podemos ver el resultado, pues la aplicación también muestra la lista de tuplas (los registros de la base de datos) por pantalla en un TextBox:

Guardar registros de consulta SQL de tabla de base de datos en memoria en una lista de tuplas y en fichero CSV con C#

Descarga de la aplicación completa de ejemplo en C#

A continuación dejamos el enlace para la descarga de la aplicación completa que accede a un servidor MySQL, guarda el resultado de la consulta SQL en una lista de tuplas y, a su vez, guarda la lista de tuplas en un fichero CSV: