Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008

22
© 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

description

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. - PowerPoint PPT Presentation

Transcript of Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008

Page 1: 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

Page 2: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 3: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 4: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 5: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Colecciones de NegocioCaso Ejemplo:• Herencia desde List<T>.• Seguridad de tipos.

Page 6: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 7: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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();

Page 8: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Colecciones de NegocioActividad 1:Colección de Negocio

Page 9: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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

Page 10: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Colecciones de NegocioOperación de Consulta LINQ

Page 11: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

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

Page 12: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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");

Page 13: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 14: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 15: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 16: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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();

Page 17: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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();

Page 18: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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);

Page 19: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 20: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 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.

Page 21: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Colecciones y ListasActividad 2:Consulta LINQ en la colección de Negocio

Page 22: Lenguaje de Programación  .Net LDP3501: Visual Studio  .Net  2008

© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.