Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008
description
Transcript of Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Lenguaje de Programación .Net
LDP3501: Visual Studio .Net 2008
Manejo de Colecciones y Listas: Colecciones de Negocio,
Introducción LINQ - LINQ to Objects
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de Negocio• Manejo grupal de nuestras
propias clase.• Funcionalidades grupales.• Responsabilidades centralizadas.• Reutilización de los métodos de
manejo de colecciones.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioCaso Ejemplo:• Factura compuesta de Líneas de
Detalle.• Funciones necesarias: agregar,
modificar y eliminar líneas.• Responsabilidad de manejo
grupal.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioCaso Ejemplo:• Clase para coleccionar las Líneas
de Detalle.• Funcionalidad centralizada para
el manejo en grupo.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioCaso Ejemplo:• Herencia desde List<T>.• Seguridad de tipos.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioObjetivos de una colección de
negocio:
• Reutilización.• Extensión.• Especialización.• Encapsulación.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioDeclaración
public class LineaDetalleCollection: List<LineaDetalle> {…}
Ejemplo de usoLineaDetalleCollection Lineas = new LineaDetalleCollection();
LineaDetalle linea = new LineaDetalle();
Lineas.Add(linea);Console.WriteLine( Lineas.Count);Lineas.Clear();
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioActividad 1:Colección de Negocio
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioLINQ (Language Integrated
Query)• 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 to Objects, LINQ to SQL y LINQ to Xml
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioOperación de Consulta LINQ
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioOperació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> var consultaNumeros = from num in numeros where (num % 2) == 0 select num;
// 3. Ejecución de la consulta. foreach (int numero in consultaNumeros) { Console.Write(numero); }
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioEl 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 document Xmlusing System.Xml.Linq;XElement contacts = XElement.Load(@"c:\Contactos.xml");
// Creación de una fuente de datos desde una base de datos SQL Server.DataContext db = new DataContext(@"c:\northwind\northwnd.mdf");
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioLa 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.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioLa 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.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioLa 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.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
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();
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioRecuperació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();
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioSintáxis de consulta y método
LINQint[] 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);
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioLINQ to Objects• Para colecciones IEnumerable e
IEnumerable<T> y de usuario.• No hay proveedores intermedios.• Evitar el uso de bucles.• La sintaxis es más declarativa.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones de NegocioLINQ to Objects – 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.
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Colecciones y ListasActividad 2:Consulta LINQ en la colección de Negocio
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.