Usando LINQ en JavaScript

En un módulo nuevo para la intranet aquí en mi trabajo, me pidieron un sistema para manejar la alimentación (entre otras cosas, precios) de pacientes, médicos, y personal.

Es posible que un “mismo” producto tenga distintos precios; considerando que, por ejemplo, el desayuno para un paciente tiene un precio de $ 111 y el desayuno para los médicos tenga un precio de $ 222.

Internamente la cosa es fácil, tengo una estructura como esta:

[
  {"IDTipoProducto":1,"ID":2,"Monto":111,"Nombre":"DESAYUNO"},
  {"IDTipoProducto":2,"ID":10,"Monto":222,"Nombre":"ALMUERZO"},
  {"IDTipoProducto":1,"ID":3,"Monto":333,"Nombre":"ALMUERZO"},
  {"IDTipoProducto":2,"ID":9,"Monto":444,"Nombre":"DESAYUNO"},
  {"IDTipoProducto":2,"ID":11,"Monto":555,"Nombre":"ONCE"},
  {"IDTipoProducto":1,"ID":4,"Monto":777,"Nombre":"ONCE"}
]

Todo ok.
Y si quiero saber el precio del desayuno para médicos (IDTipoProducto:1) ??

Eso fue lo que me descolocó x_X no se me ocurría como hacerlo … recorrer TODO el array ? No tendría sentido … por ahora son unos 20 productos, pero en un futuro pueden aumentar …

Fue cuando recordé al gran LINQ ! Peeeero esto lo estoy manejando desde JavaScript x_X así que buscando en google, encontré una librería que porta LINQ a JavaScript🙂

Entonces, la bajamos y agregamos (yo uso la jquery) y manos a la obra.

Siguiendo la misma lista de arriba, es tan simple como hacer esto:

$.Enumerable.
  From(productos).
  Where("$.IDTipoProducto==1").
  Select("$.Nombre + ' ' + $.Monto").
  WriteLine();

Y tenemos como respuesta:
DESAYUNO 111
ALMUERZO 333
ONCE 777

Tadaaaa tenemos un “SQL” dentro de una lista “JSON”🙂

Obviamente tenemos muchas opciones, que pueden ver en la documentación oficial.
Pero, para mi, esto es suficiente por ahora.

Actualización !

Encontré otra librería que me gustó más. La descargamos/linkeamos y escribimos:

var x_producto = JSLINQ(productos).
  Where(function(producto){return producto.ID==parseInt($("#cmb_editar_producto_producto").val())}).
  Select(function(producto){return producto}); 

Donde productos, sigue siendo nuestra lista de productos; producto es el objeto a revisar.

En Where, el producto.ID tiene que ser igual a un valor en un select; en Select, tomamos el producto que cumple los requisitos y podemos escoger qué devolver: el objeto entero, uno nuevo seleccionando ciertos atributos, o cualquier cosa🙂

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en JavaScript, LINQ, Tutoriales. Guarda el enlace permanente.

Una respuesta a Usando LINQ en JavaScript

  1. Eduardo dijo:

    una pregunta, sabes como seria la consulta si tengo dos condiciones, ejemp. sql(where Id=23 and Id=24)
    saludos!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s