Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: nolasco281 en 31 Mayo 2015, 18:05 pm



Título: Que es Linq y como utilizarlo en vb.net?
Publicado por: nolasco281 en 31 Mayo 2015, 18:05 pm
Hola como están.

Estaba haciendo una búsqueda en un dataGriedview y me topé con Linq me gustaría saber para que sirve.

Las preguntas concretas son:

1. Cuáles son las formas de implementar Linq en vb.net y cómo?
2. Ya viene integrado en vb.net por lo que veo si o hay que instalar algo más?
3. Con referencia a la primer pregunta es conveniente utilizarlo trae alguna ventaja en el uso de VB.net?
4. Estas consultas se pueden hacer a cualquier tipo de control seria a cualquier conjunto de datos que tenga en vb.net?
5. La última lo recomendarían usar?

Saludos.






Título: Re: Que es Linq y como utilizarlo en vb.net?
Publicado por: Eleкtro en 31 Mayo 2015, 21:38 pm
Cita de: nolasco281
Que es Linq y...?

Introduction to LINQ - MSDN (https://msdn.microsoft.com/en-us/library/bb397897.aspx)



1. Cuáles son las formas de implementar Linq en vb.net y cómo?

Hay tres formas de utilizar LINQ en .Net.

1. Mediante extensiones.
Código
  1. Dim col As IEnumerable(Of Integer) = {3, 3, 3}.Distinct

2. Mediante métodos.
Código
  1. Dim col As IEnumerable(Of Integer) = Linq.Enumerable.Distinct(Of Integer)({3, 3, 3})

3. Mediante la sintaxis específica de LINQ/SQL.
Código
  1. Dim col As IEnumerable(Of Integer) = From value As Integer In {3, 3, 3} Distinct

Enumerable Methods (https://msdn.microsoft.com/en-us/library/system.linq.enumerable_methods%28v=vs.100%29.aspx)



2. Ya viene integrado en vb.net por lo que veo si o hay que instalar algo más?

Querrás decir que si viene integrado en .Net framework, no mezcles el lenguaje con el core (la librería de classes de .Net Framework), también se puede usar LINQ desde C#.

Lo único que necesitas para poder usar LINQ es desarrollar la app bajo .Net Framework 3.5 o superior, ya que esta tecnología fue implementada en la versión 3.5 y aparece a partir de dicha versión, por ende, en versiones anteriores no existe LINQ, si tienes pensado hacer alguna app en .Net Framework 2.0 por temas de compatibilidad entonces olvida LINQ.



3. Con referencia a la primer pregunta es conveniente utilizarlo trae alguna ventaja en el uso de VB.net?

Trae sus ventajas y sus desventajas.

( En internet o MSDN puedes informarte sobre muchos más detalles que seguramente serán más técnicistas. )

• Ventajas:

· La mayor ventaja es que optimiza el tiempo de desarrollo, el rendimiento del programador ...simplificando el código, ya que LINQ hace posible resolver problemas complejos en una serie de cortos métodos comprensibles.

· La IDE de VisualStudio provee Auto-completado e IntelliSense para la sintaxis LINQ, por lo tanto es secillo diseñar una consulta eficiente en poco tiempo, es decir, sabiendo lo que haces en cada momento gracias a la documentación y las descripciones de cada método en tiempo de diseño.

(http://i.imgur.com/WhjFz05.png)

· La inicialización vaga (Lazy) de una colección Enumerable, que evita la ejecución inmediata de la consulta hasta que iteres los datos.

· El uso de expresiones Lambda en las extensiones de LINQ, siempre es más cómodo y más simplificado que si hubiese que usar delegados creando funciones adicionales solo para "X" consulta.

(http://i.imgur.com/XAIJBMH.png)

· La relación de types se resuelve automáticamente, pro LINQ es type safe y esto evita errores comunes.

(https://i-msdn.sec.s-msft.com/dynimg/IC33132.png)

· La depuración (debugging) por parte del programador a una query siempre es más sencillo que tener que depurar un procedimiento lleno de Fors entre anidaciones de condicionales y de su p*** madre.


• Desventajas:

· Con LINQ tienes que iterar todos los datos, mantener los datos que quieres, y deshechar el resto, manejando así más datos de los los que realmente serían necesarios, causando una disminuición de rendimiento, pero esta diferencia de rendimiento entre el uso de un FOR y LINQ no se nota a menos que manejes muchos, muchos datos. Yo personalmente uso LINQ siempre que surge la oportunidad.

· Al programador inexperto que se está iniciando en .Net, el excesivo uso de LINQ puede acostumbrarle a malos hábitos de programación, me explico, si alguien quiere aprender las bases de programación para resolver problemas entonces LINQ no es la solución, ya que LINQ es una especie de "dámelo todo hecho en dos lineas de código, ¡gracias!", y si no entiendes la mécanica de LINQ, entonces no has aprendido nada, pero por otro lado, opino que si LINQ existe es para usarlo, usar LINQ es muy cómodo o vago pero la base del buen programador es saber desenvolverse en el entorno utilizando las herramientas que el lenguaje te ofrezca para resolver problemas, y LINQ es una de esas herramientas que están ahí.



4. Estas consultas se pueden hacer a cualquier tipo de control seria a cualquier conjunto de datos que tenga en vb.net?

Puedes utilizar los métodos de LINQ con cualquier Class que implemente la interfáz IEnumerable, que suele ser cualquier Type genérico.

LINQ to Objects (https://msdn.microsoft.com/es-es/library/bb397919.aspx)



5. La última lo recomendarían usar?

Teniendo en cuenta las ventajas de LINQ, personalmente Sí, usar LINQ siempre es un beneficio a menos que manejes muchos datos.

Saludos


Título: Re: Que es Linq y como utilizarlo en vb.net?
Publicado por: nolasco281 en 1 Junio 2015, 02:31 am
Gracias por responder a mis preguntas y por las aclaraciones Eleкtro

Leeré la documentación que me compartes para tener un conocimiento más amplio sobre que es Linq
Y gracias por aclarar que no es recomendable el uso excesivo de esta herramienta para principiantes como yo ya que puede llevar a malos hábitos de programación.

Muchas gracias cualquier duda que tenga la hago saber gracias de nuevo, ya tengo material para leer en estos días y gracias por los ejemplos tambien me son de ayuda y entendimiento.

Saludos.

PD: Dejo abierto el hilo por si alguien más quiere comentar.