DE .NET, SQLSERVER Y MÁS, APRENDE CONMIGO!✔

Desarrollo de todo tipo de aplicaciones y Administración de Base de datos con Tecnología Microsoft


UNETE

Que es LinQ

0


 

Que es LinQ

LINQ en C# se usa para trabajar con acceso a datos de orígenes como objetos, conjuntos de datos, SQL Server y XML. LINQ son las siglas de Language Integrated Query. LINQ es una API de consulta de datos con sintaxis de consulta similares a SQL. LINQ proporciona funciones para consultar datos almacenados en caché de todo tipo de orígenes de datos. La fuente de datos podría ser una colección de objetos, una base de datos o archivos XML. Podemos recuperar fácilmente datos de cualquier objeto que implemente la interfaz IEnumerable<T>.

El objetivo oficial de la familia de tecnologías LINQ es agregar "funciones de consulta de propósito general a .NET Framework que se aplican a todas las fuentes de información, no solo a datos relacionales o XML".


Ventajas de LINQ

1.       LINQ ofrece una forma basada en objetos e integrada en el lenguaje para consultar datos sin importar de dónde provengan. Entonces, a través de LINQ, podemos consultar la base de datos, XML y las colecciones. 

2.       Comprobación de sintaxis en tiempo de compilación

3.       Le permite consultar colecciones como matrices, clases enumerables, etc. en el idioma nativo de su aplicación, como VB o C#, de la misma manera que consultaría una base de datos usando SQL.

LINQ para objeto

LINQ to Object proporciona funcionalidad para consultar colecciones y objetos en memoria. Cualquier clase que implemente la interfaz IEnumerable<T> (en el espacio de nombres System.Collections.Generic) se puede consultar con SQO.

LINQ a ADO.NET

LINQ to ADO.NET trata con datos de fuentes externas, básicamente cualquier cosa a la que ADO.NET se pueda conectar. Cualquier clase que implemente IEnumerable<T> o IQueryable<T> (en el espacio de nombres System.Query) se puede consultar con SQO.  

·         LINQ to SQL (DLinq) {Consultas realizadas en la base de datos de relaciones solo compatibles con Microsoft SQL Server} 

·         LINQ to DataSet {Admite consultas mediante el uso de conjuntos de datos y tablas de datos de ADO.NET} 

·         LINQ a entidades 

LINQ a XML (XLinq)

LINQ to XML se utiliza para consultar orígenes de datos XML.


DEMOSTRACIÓN

A continuación construiremos un pequeño conjunto de ejemplos que nos servirán como punto de inicio para comprender el funcionamiento de la sintaxis de este lenguaje. Comenzaremos creando en primer lugar un pequeño conjunto de datos sobre los que operar. Crearemos para ello cuatro entidades relacionadas entre sí. Asumiremos que tratamos de crear una aplicación para una papelería que quiere llevar un registro de clientes y ventas de productos, por lo que haremos uso de las siguientes entidades:

·         Cliente: simboliza un cliente de la papelería.

·         Id (int)

·         Nombre (string)

·         FechaNac (DateTime)

·         Producto: simboliza cada uno de los materiales que la papelería venderá a los clientes.

·         Id (int)

·         Descripcion (string)

·         Precio (float)

·         Pedido: simboliza un conjunto de productos proporcionados a un cliente concreto, por lo que se compondrá de una o más líneas de pedido.

·         Id (int)

·         IdCliente (int)

·         FechaPedido (DateTime)

·         LineaPedido: simboliza la venta de un número de un único producto concreto a un cliente en particular. Se asocia a un único pedido.

·         Id (int)

·         IdPedido (int)

·         IdProducto (int)

·         Cantidad (int)

Hemos definido las relaciones pese a que para este ejemplo no vamos a hacer uso de una base de datos relacional. Sin embargo, nuestro objetivo es simular esta opción (veremos cómo acceder a una fuente de datos relacional en posteriores artículos), por lo que haremos algo que nunca, bajo ninguna circunstancia, debería hacerse: codificar los datos en una clase de forma manual. Todo sea por el afán didáctico 

Como hemos dicho, crearemos una clase estática que contenga una lista de cada una de estas clases. El código de éstas será el siguiente:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public class Cliente

{

    public int Id { get; set; }

    public string Nombre { get; set; }

    public DateTime FechaNac { get; set; }

}

public class Producto

{

    public int Id { get; set; }

    public string Descripcion { get; set; }

    public float Precio { get; set; }

}

public class Pedido

{

    public int Id { get; set; }

    public int IdCliente { get; set; }

    public DateTime FechaPedido { get; set; }

}

public class LineaPedido

{

    public int Id { get; set; }

    public int IdPedido { get; set; }

    public int IdProducto { get; set; }

    public int Cantidad { get; set; }

}

Ahora que hemos modelado las entidades, crearemos una clase estática que contenga, también de forma estática, un listado de los objetos que acabamos de decir (niños, no hagáis esto en producción).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

    public static class DataLists

    {

        private static List<Cliente> _listaClientes = new List<Cliente>() {

            new Cliente { Id = 1,   Nombre = "Carlos Gonzalez Rodriguez",   FechaNac = new DateTime(1980, 10, 10) },

            new Cliente { Id = 2,   Nombre = "Luis Gomez Fernandez",        FechaNac = new DateTime(1961, 4, 20) },

            new Cliente { Id = 3,   Nombre = "Ana Lopez Diaz ",             FechaNac = new DateTime(1947, 1, 15) },

            new Cliente { Id = 4,   Nombre = "Fernando Martinez Perez",     FechaNac = new DateTime(1981, 8, 5) },

            new Cliente { Id = 5,   Nombre = "Lucia Garcia Sanchez",        FechaNac = new DateTime(1973, 11, 3) }

        };

 

        private static List<Producto> _listaProductos = new List<Producto>()

        {

            new Producto { Id = 1,      Descripcion = "Boligrafo",          Precio = 0.35f },

            new Producto { Id = 2,      Descripcion = "Cuaderno grande",    Precio = 1.5f },

            new Producto { Id = 3,      Descripcion = "Cuaderno pequeño",   Precio = 1 },

            new Producto { Id = 4,      Descripcion = "Folios 500 uds.",    Precio = 3.55f },

            new Producto { Id = 5,      Descripcion = "Grapadora",          Precio = 5.25f },

            new Producto { Id = 6,      Descripcion = "Tijeras",            Precio = 2 },

            new Producto { Id = 7,      Descripcion = "Cinta adhesiva",     Precio = 1.10f },

            new Producto { Id = 8,      Descripcion = "Rotulador",          Precio = 0.75f },

            new Producto { Id = 9,      Descripcion = "Mochila escolar",    Precio = 12.90f },

            new Producto { Id = 10,     Descripcion = "Pegamento barra",    Precio = 1.15f },

            new Producto { Id = 11,     Descripcion = "Lapicero",           Precio = 0.55f },

            new Producto { Id = 12,     Descripcion = "Grapas",             Precio = 0.90f }

        };

 

        private static List<Pedido> _listaPedidos = new List<Pedido>()

        {

            new Pedido { Id = 1,     IdCliente = 1,  FechaPedido = new DateTime(2013, 10, 1) },

            new Pedido { Id = 2,     IdCliente = 1,  FechaPedido = new DateTime(2013, 10, 8) },

            new Pedido { Id = 3,     IdCliente = 1,  FechaPedido = new DateTime(2013, 10, 12) },

            new Pedido { Id = 4,     IdCliente = 1,  FechaPedido = new DateTime(2013, 11, 5) },

            new Pedido { Id = 5,     IdCliente = 2,  FechaPedido = new DateTime(2013, 10, 4) },

            new Pedido { Id = 6,     IdCliente = 3,  FechaPedido = new DateTime(2013, 7, 9) },

            new Pedido { Id = 7,     IdCliente = 3,  FechaPedido = new DateTime(2013, 10, 1) },

            new Pedido { Id = 8,     IdCliente = 3,  FechaPedido = new DateTime(2013, 11, 8) },

            new Pedido { Id = 9,     IdCliente = 3,  FechaPedido = new DateTime(2013, 11, 22) },

            new Pedido { Id = 10,    IdCliente = 3,  FechaPedido = new DateTime(2013, 11, 29) },

            new Pedido { Id = 11,    IdCliente = 4,  FechaPedido = new DateTime(2013, 10, 19) },

            new Pedido { Id = 12,    IdCliente = 4,  FechaPedido = new DateTime(2013, 11, 11) }

        };

 

        private static List<LineaPedido> _listaLineasPedido = new List<LineaPedido>()

        {

            new LineaPedido() { Id = 1,  IdPedido = 1,  IdProducto = 1,     Cantidad = 9 },

            new LineaPedido() { Id = 2,  IdPedido = 1,  IdProducto = 3,     Cantidad = 7 },

            new LineaPedido() { Id = 3,  IdPedido = 1,  IdProducto = 5,     Cantidad = 2 },

            new LineaPedido() { Id = 4,  IdPedido = 1,  IdProducto = 7,     Cantidad = 2 },

            new LineaPedido() { Id = 5,  IdPedido = 2,  IdProducto = 9,     Cantidad = 1 },

            new LineaPedido() { Id = 6,  IdPedido = 2,  IdProducto = 11,    Cantidad = 15 },

            new LineaPedido() { Id = 7,  IdPedido = 3,  IdProducto = 12,    Cantidad = 2 },

            new LineaPedido() { Id = 8,  IdPedido = 3,  IdProducto = 1,     Cantidad = 4 },

            new LineaPedido() { Id = 9,  IdPedido = 4,  IdProducto = 2,     Cantidad = 3 },

            new LineaPedido() { Id = 10, IdPedido = 5,  IdProducto = 4,     Cantidad = 2 },

            new LineaPedido() { Id = 11, IdPedido = 6,  IdProducto = 1,     Cantidad = 20 },

            new LineaPedido() { Id = 12, IdPedido = 6,  IdProducto = 2,     Cantidad = 7 },

            new LineaPedido() { Id = 13, IdPedido = 7,  IdProducto = 1,     Cantidad = 4 },

            new LineaPedido() { Id = 14, IdPedido = 7,  IdProducto = 2,     Cantidad = 10 },

            new LineaPedido() { Id = 15, IdPedido = 7,  IdProducto = 11,    Cantidad = 2 },

            new LineaPedido() { Id = 16, IdPedido = 8,  IdProducto = 12,    Cantidad = 2 },

            new LineaPedido() { Id = 17, IdPedido = 8,  IdProducto = 3,     Cantidad = 9 },

            new LineaPedido() { Id = 18, IdPedido = 9,  IdProducto = 5,     Cantidad = 11 },

            new LineaPedido() { Id = 19, IdPedido = 9,  IdProducto = 6,     Cantidad = 9 },

            new LineaPedido() { Id = 20, IdPedido = 9,  IdProducto = 1,     Cantidad = 4 },

            new LineaPedido() { Id = 21, IdPedido = 10, IdProducto = 2,     Cantidad = 7 },

            new LineaPedido() { Id = 22, IdPedido = 10, IdProducto = 3,     Cantidad = 2 },

            new LineaPedido() { Id = 23, IdPedido = 10, IdProducto = 11,    Cantidad = 10 },

            new LineaPedido() { Id = 24, IdPedido = 11, IdProducto = 12,    Cantidad = 2 },

            new LineaPedido() { Id = 25, IdPedido = 12, IdProducto = 1,     Cantidad = 20 }

        };

 

        // Propiedades de los elementos privados

        public static List<Cliente> ListaClientes { get { return _listaClientes; } }

        public static List<Producto> ListaProductos { get { return _listaProductos; } }

        public static List<Pedido> ListaPedidos { get { return _listaPedidos; } }

        public static List<LineaPedido> ListaLineasPedido { get { return _listaLineasPedido; } }

    }

}

Con esto ya poseeremos un pequeño set de datos sobre el que operar.

Tal vez te interesen estas entradas

No hay comentarios