220 likes | 402 Views
Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008 Manejo de Colecciones y Listas: Colecciones de Negocio, Introducción LINQ - LINQ to Objects. Colecciones de Negocio. Manejo grupal de nuestras propias clase. Funcionalidades grupales. Responsabilidades centralizadas.
E N D
Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008 Manejo de Colecciones y Listas: Colecciones de Negocio, Introducción LINQ - LINQ toObjects
Colecciones de Negocio • Manejo grupal de nuestras propias clase. • Funcionalidades grupales. • Responsabilidades centralizadas. • Reutilización de los métodos de manejo de colecciones.
Colecciones de Negocio Caso Ejemplo: • Factura compuesta de Líneas de Detalle. • Funciones necesarias: agregar, modificar y eliminar líneas. • Responsabilidad de manejo grupal.
Colecciones de Negocio Caso Ejemplo: • Clase para coleccionar las Líneas de Detalle. • Funcionalidad centralizada para el manejo en grupo.
Colecciones de Negocio Caso Ejemplo: • Herencia desde List<T>. • Seguridad de tipos.
Colecciones de Negocio Objetivos de una colección de negocio: • Reutilización. • Extensión. • Especialización. • Encapsulación.
Colecciones de Negocio Declaración publicclassLineaDetalleCollection: List<LineaDetalle> {…} Ejemplo de uso LineaDetalleCollectionLineas = new LineaDetalleCollection(); LineaDetallelinea = new LineaDetalle(); Lineas.Add(linea); Console.WriteLine( Lineas.Count); Lineas.Clear();
Colecciones de Negocio Actividad 1: Colección de Negocio
Colecciones de Negocio LINQ (LanguageIntegratedQuery) • Incluido en la versión 3.5 • Consulta de datos desde colecciones, bases de datos y documentos Xml. • Consulta, es una expresión para recuperar datos. • LINQ toObjects, LINQ to SQL y LINQ toXml
Colecciones de Negocio Operación de Consulta LINQ
Colecciones de Negocio Operación de Consulta LINQ /* Las 3 partes de una consulta LINQ */ // 1. Origen de Datos. int[] numeros = new int[5] { 1, 2, 3, 4, 5, }; // 2. Consulta. // consultaNumeros será una instancia de IEnumerable<int> varconsultaNumeros = fromnum in numeros where (num % 2) == 0 selectnum; // 3. Ejecución de la consulta. foreach (int numero in consultaNumeros) { Console.Write(numero); }
Colecciones de Negocio El Origen de Datos. • Colecciones de Objetos y arreglos. • Bases de Datos. • Documentos Xml • Cualquier objeto que admite la interfaz genérica IEnumerable<T> // Creación de una fuente de datos desde un documentXml usingSystem.Xml.Linq; XElementcontacts = XElement.Load(@"c:\Contactos.xml"); // Creación de una fuente de datos desde una base de datos SQL Server. DataContextdb = new DataContext(@"c:\northwind\northwnd.mdf");
Colecciones de Negocio La Consulta. • Especifica la información a recuperar. • Ordenamiento y agrupación opcional. • Estructurada por las cláusulas: from, where y select. • La expresión de consulta o variable de consulta NO ejecuta la consulta.
Colecciones de Negocio La Consulta – Características • Se usan para consultar y transformar los datos de cualquier origen de datos compatible con LINQ. • Son fáciles de controlar porque utilizan muchas construcciones de lenguaje de C# familiares. • Todas las variables de una expresión de consulta tienen establecimiento inflexible de tipos. • Una consulta no se ejecuta hasta que se recorre en iteración la variable de consulta en una instrucción foreach.
Colecciones de Negocio La Consulta – Características • En tiempo de compilación, las expresiones de consulta se convierten en llamadas a métodos de operador de consulta estándar de acuerdo con las reglas establecidas en la especificación de C#. • Como norma, cuando escriba consultas LINQ, se recomienda que siempre que sea posible se utilice la sintaxis de consulta y que utilice la sintaxis de método sólo cuando sea necesario. • Algunas operaciones de consulta, como Count o Max, no tienen ninguna cláusula de expresión de consulta equivalente y, por tanto, deben expresarse como una llamada a método.
Colecciones de Negocio • Ejecución Diferida • Ejecución forzada foreach (int numero in consultaNumeros) { Console.Write(numero); } /* Consulta para obtener los números pares del arreglo */ var consultaNumeros = from num in numeros where (num % 2) == 0 select num; /* Obtiene el total de números pares en base a la consulta */ int total = consultaNumeros.Count();
Colecciones de Negocio • Recuperación con ToList y ToArray /* Recuperación en una lista */ List<int> consultaLista = (from num in numeros where (num % 2) == 0 select num).ToList(); /* Recuperación en un arreglo */ var consultaArreglo = (from num in numeros where (num % 2) == 0 select num).ToArray();
Colecciones de Negocio • Sintáxis de consulta y método LINQ int[] numeros = { 1, 2, 3, 4, 5 }; //Sintaxis de Consulta: IEnumerable<int> numQuery1 = from num in numeros where num % 2 == 0 orderby num select num; //Sintaxis de Método: IEnumerable<int> numQuery2 = numeros.Where(num => num % 2 == 0).OrderBy(n => n);
Colecciones de Negocio • LINQ toObjects • Para colecciones IEnumerable e IEnumerable<T> y de usuario. • No hay proveedores intermedios. • Evitar el uso de bucles. • La sintaxis es más declarativa.
Colecciones de Negocio • LINQ toObjects – Ventajas sobre foreach: • Son más concisas y legibles, sobre todo al filtrar varias condiciones. • Proporcionan funcionalidad eficaz de filtrado, ordenación y agrupación con código de aplicación mínimo. • Se pueden trasladar a otros orígenes de datos con pocas o ningunas modificaciones.
Colecciones y Listas Actividad 2: Consulta LINQ en la colección de Negocio