Saltar al contenido

Selección y transformación de datos con LINQ

Se nos ha encomendado la tarea de escribir una capa de negocios que filtrará y organizará un conjunto de resultados devueltos de una consulta. Los resultados tienen ciertos elementos que deben ser transformados, filtrados, ordenados y agrupados. Es importante entender que con LINQ, los resultados pueden haber venido de una base de datos, pueden haber venido del sistema de archivos, o escuchando en un enchufe de red, o pueden estar codificados. La forma en que los resultados llegaron a nosotros es en gran medida inmaterial – LINQ está diseñado para ser totalmente genérico en la forma en que realiza el tipo de operaciones de conjunto con las que vamos a trabajar.

Para empezar, tenemos un conjunto de objetos Employee, como los resultados de la consulta que miramos en la primera sección, pero no filtrados por tener un tipo de grupo que empieza con AA. Así que nuestro objeto Employee tiene este aspecto:

Selección y transformación de datos con LINQ
Selección y transformación de datos con LINQ

1234567891011clase públicaEmpleado{cadena pública Nombre {get;set;}cadena pública Apellido {get;set;}cadena pública Id {get;set;}codigo de grupo {get;set;}cadena pública Lista<string> Direcciones {get;set;}</pre>
csharp

Muy simple. Para los propósitos de esta guía, we're crear un conjunto de tres Empleados con este código:

123456Lista<Empleado> empleados =newList<Empleado>{newEmployee{ Id =1, Nombre ="Chris", Apellido ="Behrens", Código de Grupo =" AA123", Direcciones =newList<string>{"7814 Vandalia Avenue Apt 3b Los Angeles CA 91610"}}, newEmployee{ Id =2, Nombre ="Sam", Apellido =" Smith", GroupCode ="AA128", Addresses =newList<string>{"7814 Vandalia Avenue Apt 3b Los Angeles CA 91610"}},newEmployee{ Id =3, FirstName =" Gill", Apellido ="Bates", Código de Grupo ="ZZ867", Direcciones =newList<string>{"2810 Pisces Ct Albuequerque, NM 87144"}}};</pre>
csharp

Y este conjunto está contenido en una variable de lista llamada Empleados . Necesitamos una matriz de los ID de los empleados – tenemos un conjunto de ID de los empleados que queremos filtrar de los resultados. Esta sentencia devuelve el conjunto completo como una matriz:

12var employeeArray =(from e in employeesselect e).ToArray();</pre
csharp

Siempre comenzamos nuestras declaraciones LINQ con – esto define el conjunto con el que trabajamos y la variable que usamos para nuestras operaciones de conjunto. Aquí, we're seleccionando todo el conjunto de empleados, definiendo la variable del conjunto como , y seleccionándola, es decir, devolviendo el valor para la consulta. Finalmente, envolvemos toda la consulta y la transformamos en un array con ToArray().

Esto es genial, pero ahora tenemos un conjunto de objetos de Empleados – queremos un conjunto más simple de ints que contengan sólo el ID. Para reducir el alcance de lo que se está seleccionando, seleccionamos la propiedad ID en nuestra variable de conjunto :

12var employeeIdArray =(de e en empleados seleccione e.Id).ToArray();</pre
csharp

Tan simple como eso.