Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LINQ - Guía Rápida - Tutorial
LINQ - Guía Rápida - Tutorial
Los desarrolladores de todo el mundo siempre han tenido problemas para consultar datos debido a la
falta de una ruta definida y necesitan dominar múltiples tecnologías como SQL, Servicios web, XQuery,
etc.
Introducido en Visual Studio 2008 y diseñado por Anders Hejlsberg, LINQ (Language Integrated Query)
permite escribir consultas incluso sin el conocimiento de lenguajes de consulta como SQL, XML, etc. Las
consultas LINQ se pueden escribir para diversos tipos de datos.
C#
using System;
using System.Linq;
class Program {
static void Main() {
Console.ReadLine();
}
}
VB
Module Module1
Sub Main()
Dim words As String() = {"hello", "wonderful", "LINQ", "beautiful", "world"}
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 1/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Dim shortWords = From word In words _ Where word.Length <= 5 _ Select word
Console.ReadLine()
End Sub
End Module
hello
LINQ
world
Sintaxis de LINQ
Tipos de LINQ
Además de lo anterior, también hay un tipo LINQ llamado PLINQ que es el LINQ paralelo de Microsoft.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 2/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
LINQ tiene una arquitectura de 3 capas en la que la capa superior consta de las extensiones de lenguaje
y la capa inferior consta de fuentes de datos que normalmente son objetos que implementan interfaces
genéricas IEnumerable <T> o IQueryable <T>. La arquitectura se muestra a continuación.
Consultar expresiones
La expresión de consulta no es más que una consulta LINQ, expresada en una forma similar a la de SQL
con operadores de consulta como Select, Where y OrderBy. Las expresiones de consulta generalmente
comienzan con la palabra clave "De".
Para acceder a los operadores de consulta LINQ estándar, el espacio de nombres System.Query debe
importarse de forma predeterminada. Estas expresiones se escriben dentro de una sintaxis de consulta
declarativa que era C # 3.0.
A continuación se muestra un ejemplo para mostrar una operación de consulta completa que consiste en
la creación de fuente de datos, definición de expresión de consulta y ejecución de consulta.
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Operators {
class LINQQueryExpressions {
static void Main() {
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 3/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Console.ReadLine();
}
}
}
97 92 81
Métodos de extensión
Introducido con .NET 3.5, los métodos de extensión se declaran solo en clases estáticas y permiten la
inclusión de métodos personalizados en los objetos para realizar algunas operaciones de consulta
precisas para extender una clase sin ser un miembro real de esa clase. Estos también se pueden
sobrecargar.
En pocas palabras, los métodos de extensión se utilizan para traducir expresiones de consulta en
llamadas a métodos tradicionales (orientadas a objetos).
Existe una gran variedad de diferencias entre LINQ y los procedimientos almacenados. Estas diferencias
se mencionan a continuación.
Los procedimientos almacenados son mucho más rápidos que una consulta LINQ, ya que
siguen un plan de ejecución esperado.
Es fácil evitar errores de tiempo de ejecución al ejecutar una consulta LINQ que en comparación
con un procedimiento almacenado, ya que el primero tiene soporte Intellisense de Visual Studio,
así como la verificación de tipo completo durante el tiempo de compilación.
LINQ permite la depuración haciendo uso del depurador .NET que no es en el caso de
procedimientos almacenados.
LINQ ofrece soporte para múltiples bases de datos en contraste con los procedimientos
almacenados, donde es esencial reescribir el código para diversos tipos de bases de datos.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 4/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Necesidad de LINQ
Antes de LINQ, era esencial aprender C #, SQL y varias API que unían ambas para formar una aplicación
completa. Desde entonces, estas fuentes de datos y lenguajes de programación enfrentan un desajuste
de impedancia; Se siente la necesidad de una codificación corta.
A continuación se muestra un ejemplo de cuántas técnicas diversas fueron utilizadas por los
desarrolladores al consultar datos antes del advenimiento de LINQ.
Curiosamente, fuera de las líneas de código presentadas, la consulta se define solo por las dos últimas.
Usando LINQ, la misma consulta de datos puede escribirse en un formato de código de color legible
como el siguiente mencionado a continuación que también en muy poco tiempo.
Ventajas de LINQ
LINQ ofrece una serie de ventajas y, entre ellas, la más destacada es su poderosa expresividad que
permite a los desarrolladores expresarse de manera declarativa. Algunas de las otras ventajas de LINQ
se dan a continuación.
LINQ ofrece resaltado de sintaxis que resulta útil para descubrir errores durante el tiempo de
diseño.
LINQ ofrece IntelliSense, lo que significa escribir consultas más precisas fácilmente.
Escribir códigos es bastante más rápido en LINQ y, por lo tanto, el tiempo de desarrollo también
se reduce significativamente.
Ver la relación entre dos tablas es fácil con LINQ debido a su función jerárquica y esto permite
componer consultas uniendo múltiples tablas en menos tiempo.
LINQ permite el uso de una única sintaxis LINQ mientras se consultan muchas fuentes de datos
diversas, y esto se debe principalmente a su base unitiva.
LINQ es extensible, lo que significa que es posible utilizar el conocimiento de LINQ para
consultar nuevos tipos de fuentes de datos.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 5/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
LINQ ofrece la posibilidad de unir varias fuentes de datos en una sola consulta, así como dividir
problemas complejos en un conjunto de consultas cortas fáciles de depurar.
LINQ ofrece una transformación fácil para la conversión de un tipo de datos a otro, como la
transformación de datos SQL a datos XML.
Antes de comenzar con los programas LINQ, lo mejor es comprender primero los matices de configurar
un entorno LINQ. LINQ necesita un marco .NET, una plataforma revolucionaria para tener un tipo diverso
de aplicaciones. Una consulta LINQ se puede escribir en C # o Visual Basic convenientemente.
Microsoft ofrece herramientas para ambos lenguajes, es decir, C # y Visual Basic mediante Visual Studio.
Todos nuestros ejemplos están compilados y escritos en Visual Studio 2010. Sin embargo, la edición
Visual Basic 2013 también está disponible para su uso. Es la última versión y tiene muchas similitudes
con Visual Studio 2012.
Visual Studio se puede instalar desde un medio de instalación como un DVD. Se requieren credenciales
de administrador para instalar Visual Basic 2010 en su sistema con éxito. Es vital desconectar todos los
USB extraíbles del sistema antes de la instalación; de lo contrario, la instalación podría fallar. Algunos de
los requisitos de hardware esenciales para tener para la instalación son los siguientes.
Requisitos de hardware
Pasos de instalación
Paso 1 : Primero, después de insertar el DVD con el paquete Visual Studio 2010, haga clic en Instalar o
ejecutar el programa desde su medio que aparece en un cuadro emergente en la pantalla.
Paso 2 : ahora configurado en Visual Studio aparecerá en la pantalla. Elija Instalar Microsoft Visual
Studio 2010 .
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 6/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Paso 3 : tan pronto como haga clic, se iniciará el proceso y aparecerá una ventana de configuración en
su pantalla. Después de completar la carga de los componentes de instalación, lo que llevará algún
tiempo, haga clic en el botón Siguiente para pasar al siguiente paso.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 7/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Paso 4 : este es el último paso de la instalación y aparecerá una página de inicio en la que simplemente
elija "He leído y acepto los términos de la licencia" y haga clic en el botón Siguiente .
Paso 5 : ahora seleccione las características para instalar desde la página de opciones que aparece en
su pantalla. Puede elegir la opción Completa o Personalizada . Si tiene menos espacio en disco que el
requerido, como se muestra en los requisitos de espacio en disco, vaya a Personalizado.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 8/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Paso 6 : cuando elige la opción personalizada, aparecerá la siguiente ventana. Seleccione las funciones
que desea instalar y haga clic en Actualizar o vaya al paso 7. Sin embargo, se recomienda no ir con la
opción personalizada, ya que en el futuro, puede necesitar las funciones que ha elegido no tener.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 9/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Paso 7 : pronto se mostrará una ventana emergente y se iniciará la instalación, lo que puede llevar
mucho tiempo. Recuerde, esto es para instalar todos los componentes.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 10/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Paso 8 : finalmente, podrá ver un mensaje en una ventana que indica que la instalación se ha
completado correctamente. Haz clic en Finalizar .
Ahora elija Visual C # como categoría en las plantillas instaladas y luego elija la plantilla de la
Aplicación de consola como se muestra en la figura a continuación.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 11/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 12/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Ahora elija Program.cs del Explorador de soluciones y puede ver el código en la ventana del
editor que comienza con 'usar el sistema'.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HelloWorld {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hello World")
Console.ReadKey();
}
}
}
Inicie Visual Studio 2010 Ultimate Edition y elija Archivo seguido de Nuevo proyecto en el menú.
Ahora elija Visual Basic como categoría en plantillas instaladas y luego elija Plantilla de
aplicación de consola.
Obtendrá una pantalla con Module1.vb. Comience a escribir su código VB aquí usando LINQ.
Module Module1
Sub Main()
Console.WriteLine("Hello World")
Console.ReadLine()
End Sub
End Module
Hello World
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 13/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Un conjunto de métodos de extensión que forman un patrón de consulta se conoce como operadores de
consulta estándar de LINQ. Como bloques de construcción de expresiones de consulta LINQ, estos
operadores ofrecen una gama de capacidades de consulta como filtrado, clasificación, proyección,
agregación, etc.
Los operadores de consulta estándar de LINQ se pueden clasificar en los siguientes en función de su
funcionalidad.
Operadores de filtrado
Únete a los operadores
Operaciones de proyección
Operadores de clasificación
Operadores de agrupamiento
Conversiones
Concatenación
Agregación
Operaciones de cuantificador
Operaciones de partición
Operaciones de generacion
Establecer operaciones
Igualdad
Operadores de elementos
Operadores de filtrado
El filtrado es una operación para restringir el conjunto de resultados de modo que solo tenga elementos
seleccionados que satisfagan una condición particular.
Mostrar ejemplos
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 14/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Unirse se refiere a una operación en la que se dirigen fuentes de datos con relaciones difíciles de seguir
entre sí de manera directa.
Mostrar ejemplos
Unirse El operador une dos secuencias en unirse ... en ... en ... es De x In ..., y In ...
función de teclas coincidentes igual a ... Donde xa = ya
GroupJoin Une dos secuencias y agrupa los unirse ... en ... en ... es Unirse al grupo ... En ...
elementos coincidentes igual a ... en ... En ...
Operaciones de proyección
La proyección es una operación en la que un objeto se transforma en una forma completamente nueva
con solo propiedades específicas.
Mostrar ejemplos
Operadores de clasificación
Una operación de clasificación permite ordenar los elementos de una secuencia en función de uno o más
atributos.
Mostrar ejemplos
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 15/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
OrderByDescending El operador ordena los valores en orden ordenar por ... Ordenar por
descendente descendente ...
descendente
Entonces por Ejecuta una clasificación secundaria en ordenado ..., ... Ordenar por
orden ascendente ..., ...
EntoncesPor Ejecuta una clasificación secundaria en ordenado ..., ... Ordenar por
Descendente orden descendente. descendiendo ..., ...
descendiendo
Marcha atrás Realiza una inversión del orden de los No aplica No aplica
elementos en una colección.
Operadores de agrupamiento
Los operadores colocan los datos en algunos grupos en función de un atributo compartido común.
Mostrar ejemplos
Agrupar Organice una secuencia de elementos en grupo ... por -o- grupo ... Agrupar ... Por ... En ...
por grupos y devuélvalos como una colección por ... en ...
IEnumerable de tipo IGrouping <key,
element>
Conversiones
Los operadores cambian el tipo de objetos de entrada y se utilizan en una amplia gama de aplicaciones.
Mostrar ejemplos
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 16/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Emitir Realiza la conversión de elementos de Utilice una variable de De ... Como ...
una colección a un tipo específico rango explícitamente
escrita. Por ejemplo: de
string str en palabras
Concatenación
Mostrar ejemplos
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 17/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Agregación
Realiza cualquier tipo de agregación deseada y permite crear agregaciones personalizadas en LINQ.
Mostrar ejemplos
Contar Cuenta los elementos que satisfacen una No aplica Agregado ... En ... En
función de predicado dentro de la Cuenta ()
colección
LonCount Cuenta los elementos que satisfacen una No aplica Agregado ... En ... En
función de predicado dentro de una gran LongCount ()
colección
Max Descubre el valor máximo dentro de una No aplica Agregado ... En ... En
colección Max ()
Min Descubra el valor mínimo existente dentro No aplica Agregado ... En ... En
de una colección Min ()
Operaciones de cuantificador
Estos operadores devuelven un valor booleano, es decir, Verdadero o Falso cuando algunos o todos los
elementos dentro de una secuencia satisfacen una condición específica.
Mostrar ejemplos
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 18/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Todas Devuelve un valor 'Verdadero' si todos los No aplica Agregado ... En ... En
elementos de una secuencia satisfacen Todos (...)
una condición de predicado
Operadores de partición
Divida una secuencia de entrada en dos secciones separadas sin reorganizar los elementos de la
secuencia y luego devolver una de ellas.
Mostrar ejemplos
Operaciones de generacion
Los operadores generacionales crean una nueva secuencia de valores.
Mostrar ejemplos
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 19/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Establecer operaciones
Hay cuatro operadores para las operaciones de conjunto, cada uno con un resultado basado en
diferentes criterios.
Mostrar ejemplos
Igualdad
Compara dos oraciones (enumerables) y determina si son una coincidencia exacta o no.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 20/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Mostrar ejemplos
Operadores de elementos
Excepto el DefaultIfEmpty, los restantes ocho operadores de elementos de consulta estándar devuelven
un único elemento de una colección.
Mostrar ejemplos
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 21/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
LINQ - SQL
LINQ to SQL ofrece una infraestructura (tiempo de ejecución) para la gestión de datos relacionales como
objetos. Es un componente de la versión 3.5 de .NET Framework y hábilmente traduce consultas SQL
integradas en el lenguaje del modelo de objetos. Estas consultas se envían a la base de datos con el fin
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 22/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
de su ejecución. Después de obtener los resultados de la base de datos, LINQ to SQL nuevamente los
traduce a objetos.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 23/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 24/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Paso 3 : seleccione tablas de la base de datos y arrastre y suelte en el nuevo archivo de clase LINQ to
SQL.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 25/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Las reglas para ejecutar una consulta con LINQ to SQL son similares a las de una consulta LINQ
estándar, es decir, la consulta se ejecuta diferida o inmediata. Hay varios componentes que juegan un
papel en la ejecución de una consulta con LINQ to SQL y estos son los siguientes.
API de LINQ to SQL : solicita la ejecución de consultas en nombre de una aplicación y la envía
a LINQ to SQL Provider.
Proveedor LINQ to SQL : convierte la consulta a Transact SQL (T-SQL) y envía la nueva
consulta al proveedor ADO para su ejecución.
Cabe señalar que antes de ejecutar una consulta LINQ to SQL, es vital conectarse a la fuente de datos a
través de la clase DataContext.
Agregar o insertar
C#
using System;
using System.Linq;
namespace LINQtoSQL {
class LinqToSQLCRUD {
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 26/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
class LinqToSQLCRUD {
static void Main(string[] args) {
VB
Module Module1
Sub Main()
newEmployee.Name = "Michael"
newEmployee.Email = "yourname@companyname.com"
newEmployee.ContactNo = "343434343"
E l D t tIdd 3
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 27/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
newEmployee.DepartmentId = 3
newEmployee.Address = "Michael - USA"
db.Employees.InsertOnSubmit(newEmployee)
db.SubmitChanges()
End Sub
End Module
Actualizar
C#
using System;
using System.Linq;
namespace LINQtoSQL {
class LinqToSQLCRUD {
static void Main(string[] args) {
VB
Module Module1
Sub Main()
db.SubmitChanges()
End Sub
End Module
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 29/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Eliminar
C#
using System;
using System.Linq;
namespace LINQtoSQL {
class LinqToSQLCRUD {
static void Main(string[] args) {
LinqToSQLDataContext db = newLinqToSQLDataContext(connectString);
//Delete Employee
db.Employees.DeleteOnSubmit(deleteEmployee);
VB
Module Module1
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 30/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Sub Main()
db.Employees.DeleteOnSubmit(deleteEmployee)
db.SubmitChanges()
End Module
LINQ - Objetos
LINQ to Objects ofrece el uso de cualquier consulta LINQ que admita IEnumerable <T> para acceder a
colecciones de datos en memoria sin necesidad de un proveedor LINQ (API) como en el caso de LINQ to
SQL o LINQ to XML.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 31/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
colección que ahora se reemplaza escribiendo un código declarativo que describa claramente los datos
deseados. eso es necesario para recuperar.
También hay muchas ventajas de LINQ to Objects sobre los bucles foreach tradicionales, como mayor
legibilidad, filtrado potente, capacidad de agrupación, ordenamiento mejorado con codificación de
aplicación mínima. Estas consultas LINQ también son de naturaleza más compacta y son portables a
cualquier otra fuente de datos sin ninguna modificación o con solo una pequeña modificación.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LINQtoObjects {
class Program {
static void Main(string[] args) {
Console.WriteLine(sb.ToString(), "Tools");
Console.ReadLine();
}
}
}
En el ejemplo, una matriz de cadenas (herramientas) se utiliza como la colección de objetos que se
consultarán mediante LINQ to Objects.
Tablesaw
Bandsaw
Planer
Jointer
Drill
Sander
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 32/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
C#
using System;
using System.Collections.Generic;
using System.Linq;
namespace LINQtoObjects {
class Department {
public int DepartmentId { get; set; }
public string Name { get; set; }
}
class LinqToObjects {
static void Main(string[] args) {
VB
Imports System.Collections.Generic
Imports System.Linq
Module Module1
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 33/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
End Sub
Class Department
Public Property Name As String
Public Property DepartmentId As Integer
End Class
End Module
Un conjunto de datos ofrece una representación de datos extremadamente útil en la memoria y se utiliza
para una amplia gama de aplicaciones basadas en datos. LINQ to Dataset como una de las tecnologías
de LINQ to ADO.NET facilita la realización de consultas sobre los datos de un conjunto de datos de una
manera sin problemas y mejora la productividad.
LINQ to Dataset ha simplificado la tarea de consulta para los desarrolladores. No necesitan escribir
consultas en un lenguaje de consulta específico, sino que lo mismo se puede escribir en lenguaje de
programación. LINQ to Dataset también se puede usar para consultar dónde se consolidan los datos de
múltiples fuentes de datos. Esto tampoco necesita ningún proveedor de LINQ, como LINQ to SQL y LINQ
to XML para acceder a los datos de las colecciones de memoria.
A continuación se muestra un ejemplo simple de una consulta LINQ to Dataset en la que primero se
obtiene una fuente de datos y luego el conjunto de datos se llena con dos tablas de datos. Se establece
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 34/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
una relación entre ambas tablas y se crea una consulta LINQ contra ambas tablas mediante una cláusula
de unión. Finalmente, foreach loop se usa para mostrar los resultados deseados.
C#
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LINQtoDataset {
class Program {
static void Main(string[] args) {
DataRelation dr = ds.Relations.Add("FK_Employee_Department",
ds.Tables["Department"].Columns["DepartmentId"],
ds.Tables["Employee"].Columns["DepartmentId"]);
VB
Imports System.Data.SqlClient
Imports System.Linq
Module LinqToDataSet
Sub Main()
da.TableMappings.Add("Table", "Department")
da.TableMappings.Add("Table1", "Employee")
h
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 36/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
For Each e In query
Console.WriteLine("Employee Id = {0} , Name = {1} , Department Name = {2}", e.EmployeeI
Next
End Sub
Class Person
Public Property EmployeeId As Integer
Public Property EmployeeName As String
Public Property DepartmentId As Integer
Public Property DepartmentName As String
End Class
End Module
C#
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
i {
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 37/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
namespace LinqToDataset {
class SingleTable {
static void Main(string[] args) {
VB
Imports System.Data.SqlClient
Imports System.Linq
Module LinqToDataSet
Sub Main()
da.TableMappings.Add("Table", "Department")
Dim ds As New DataSet()
da.Fill(ds)
End Module
LINQ - XML
LINQ to XML ofrece una fácil accesibilidad a todas las funcionalidades de LINQ como operadores de
consulta estándar, interfaz de programación, etc. Integrado en el marco .NET, LINQ to XML también hace
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 39/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
el mejor uso de las funcionalidades del marco .NET como depuración, verificación en tiempo de
compilación, tipeo fuerte y mucho mas que decir.
Al usar LINQ to XML, cargar documentos XML en la memoria es fácil y más fácil es consultar y modificar
documentos. También es posible guardar documentos XML existentes en la memoria en el disco y
serializarlos. Elimina la necesidad de que un desarrollador aprenda el lenguaje de consulta XML que es
algo complejo.
LINQ to XML tiene su poder en el espacio de nombres System.Xml.Linq. Esto tiene las 19 clases
necesarias para trabajar con XML. Estas clases son las siguientes.
XAttribute
XCData
XComment
XContainer
XDeclaración
XDocument
XDocumentType
XElement
XName
XNamespace
XNode
XNodeDocumentOrderComparer
XNodeEqualityComparer
XObject
XObjectChange
XObjectChangeEventArgs
XObjectEventHandler
XProcessingInstruction
XText
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace LINQtoXML {
class ExampleOfXML {
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 40/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
VB
Imports System.Collections.Generic
Imports System.Linq
Imports System.Xml.Linq
Module Module1
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 41/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
End Sub
End Module
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace LINQtoXML {
class ExampleOfXML {
static void Main(string[] args) {
VB
Imports System.Collections.Generic
Imports System.Linq
Imports System.Xml.Linq
Module Module1
End Sub
End Module
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 43/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace LINQtoXML {
class ExampleOfXML {
static void Main(string[] args) {
VB
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 44/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Imports System.Collections.Generic
Imports System.Linq
Imports System.Xml.Linq
Module Module1
End Sub
End Module
LINQ - Entidades
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 45/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Como parte de ADO.NET Entity Framework, LINQ to Entities es más flexible que LINQ to SQL, pero no
es muy popular debido a su complejidad y falta de características clave. Sin embargo, no tiene las
limitaciones de LINQ to SQL que permite la consulta de datos solo en la base de datos del servidor SQL,
ya que LINQ to Entities facilita la consulta de datos en una gran cantidad de proveedores de datos como
Oracle, MySQL, etc.
Además, tiene un gran apoyo de ASP.Net en el sentido de que los usuarios pueden utilizar un control de
fuente de datos para ejecutar una consulta a través de LINQ a las entidades y facilita la vinculación de los
resultados sin necesidad de codificación adicional.
Para estas ventajas, LINQ to Entities se ha convertido en el mecanismo estándar para el uso de LINQ en
bases de datos en la actualidad. También es posible con LINQ to Entities cambiar los detalles de los
datos consultados y confirmar fácilmente una actualización por lotes. El hecho más interesante sobre
LINQ to Entities es que tiene la misma sintaxis como la de SQL e incluso tiene el mismo grupo de
operadores de consulta estándar como Join, Select, OrderBy, etc.
Redactar una consulta en C # o Visual Basic (VB) utilizando la instancia recién construida
ObjectContext es aquí la clase primaria que permite la interacción con Entity Data Model o, en otras
palabras, actúa como un puente que conecta LINQ con la base de datos. Los árboles de comandos son
aquí representación de consultas con compatibilidad con el marco de Entity.
El Entity Framework, por otro lado, es en realidad Mapper Relacional de Objetos abreviado
generalmente como ORM por los desarrolladores que realiza la generación de objetos comerciales y
entidades según las tablas de la base de datos y facilita varias operaciones básicas como crear,
actualizar, eliminar y leer . La siguiente ilustración muestra el marco de la entidad y sus componentes.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 46/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Paso 1 : haga clic con el botón derecho en el proyecto y haga clic en Agregar nuevo elemento para abrir
la ventana como se muestra a continuación. Seleccione el modelo de datos de entidad ADO.NET y
especifique el nombre y haga clic en Agregar.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 47/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 48/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 49/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
using DataAccess;
using System;
using System.Linq;
namespace LINQTOSQLConsoleApp {
public class LinqToEntityModel {
static void Main(string[] args) {
context.Departments.Add(department);
context.SaveChanges();
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 51/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
El término 'expresión lambda' deriva su nombre del cálculo 'lambda' que a su vez es una notación
matemática aplicada para definir funciones. Las expresiones Lambda como parte ejecutable de una
ecuación de LINQ traducen la lógica de una manera en tiempo de ejecución para que pueda pasar a la
fuente de datos convenientemente. Sin embargo, las expresiones lambda no se limitan solo a buscar
aplicaciones solo en LINQ.
y⇒y*y
La expresión anterior especifica un parámetro llamado y y ese valor de y es cuadrado. Sin embargo, no
es posible ejecutar una expresión lambda de esta forma. A continuación se muestra un ejemplo de una
expresión lambda en C #.
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lambdaexample {
class Program {
del myDelegate = y ⇒ y * y;
int j = myDelegate(5);
Console.WriteLine(j);
Console.ReadLine();
}
}
}
VB
Module Module1
Private Delegate Function del(ByVal i As Integer) As Integer
End Sub
End Module
25
Expresión lambda
Como la expresión en la sintaxis de la expresión lambda que se muestra arriba está en el lado derecho,
también se conoce como expresión lambda.
Lambdas asíncronas
La expresión lambda creada al incorporar el procesamiento asincrónico mediante el uso de la palabra
clave asíncrona se conoce como lambdas asíncronas. A continuación se muestra un ejemplo de lambda
asíncrona.
secuencia. La expresión Lambda permite a los desarrolladores alimentar su propia lógica en los
operadores de consulta estándar. En el ejemplo a continuación, el desarrollador ha utilizado el operador
'Dónde' para reclamar los valores impares de la lista dada utilizando una expresión lambda.
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lambdaexample {
class Program {
static void Main(string[] args) {
VB
Module Module1
Sub Main()
Console.WriteLine(averageValue)
Console.ReadLine()
End Sub
End Module
7.33333333333333
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 54/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Aquí el compilador emplea la inferencia de tipos para aprovechar el hecho de que x es un número entero
y esto se hace examinando el tipo de parámetro del Transformador.
Hay algunas reglas al usar el alcance variable en una expresión lambda, como las variables que se
inician dentro de una expresión lambda no deben ser visibles en un método externo. También hay una
regla de que una variable capturada no se debe recolectar basura a menos que el delegado que hace
referencia a la misma sea elegible para el acto de recolección de basura. Además, hay una regla que
prohíbe que una declaración return dentro de una expresión lambda provoque la devolución de un
método de cierre.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lambdaexample {
class Program {
delegate bool D();
delegate bool D2(int i);
class Test {
D del;
D2 del2;
// Demonstrate value of j:
// The delegate has not been invoked yet.
Console.WriteLine("j = {0}", j); // Invoke the delegate.
bool boolResult = del();
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 55/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
Console.WriteLine(result);
Console.ReadKey();
}
}
}
}
j = 0
j = 10. b = True
True
Árbol de expresión
Las expresiones lambda se usan ampliamente en la construcción del árbol de expresiones . Un árbol de
expresión regala código en una estructura de datos que se asemeja a un árbol en el que cada nodo es en
sí mismo una expresión como una llamada a método o puede ser una operación binaria como x <y. A
continuación se muestra un ejemplo del uso de la expresión lambda para construir un árbol de expresión.
Declaración Lambda
También hay declaraciones lambdas que consisten en dos o tres declaraciones, pero no se usan en la
construcción de árboles de expresión. Una declaración de devolución debe escribirse en una declaración
lambda.
(params)⇒ {statements}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 56/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
namespace lambdaexample {
class Program {
static void Main(string[] args) {
int[] source = new[] { 3, 8, 4, 6, 1, 7, 9, 2, 4, 8 };
3
8
1
7
9
2
8
Las lambdas se emplean como argumentos en consultas LINQ basadas en métodos y nunca se les
permite tener un lugar en el lado izquierdo de los operadores como es o como los métodos anónimos.
Aunque las expresiones Lambda son métodos anónimos muy parecidos, estos no están restringidos en
absoluto para ser utilizados solo como delegados.
Los parámetros se pueden definir de muchas maneras con una expresión lambda.
Si hay una sola declaración en una expresión lambda, no hay necesidad de llaves, mientras que
si hay varias declaraciones, las llaves y el valor de retorno son esenciales para escribir.
Con las expresiones lambda, es posible acceder a las variables presentes fuera del bloque de
expresiones lambda mediante una característica conocida como cierre. El uso del cierre debe
hacerse con precaución para evitar cualquier problema.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 57/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
LINQ - ASP.Net
Como un conjunto de extensiones de .NET Framework, LINQ es el mecanismo preferido para el acceso a
datos por parte de los desarrolladores de ASP.NET. ASP.NET 3.5 tiene una herramienta integrada de
control LINQDataSource que permite el uso de LINQ fácilmente en ASP.NET. ASP.NET utiliza el control
mencionado anteriormente como fuente de datos. Los proyectos de la vida real abarcan principalmente
sitios web o aplicaciones de Windows y, por lo tanto, para comprender mejor el concepto de LINQ con
ASP.NET, comencemos por crear un sitio web ASP.NET que haga uso de las características de LINQ.
Para esto, es esencial instalar Visual Studio y .NET Framework en su sistema. Una vez que haya abierto
Visual Studio, vaya a Archivo → Nuevo → Sitio web. Se abrirá una ventana emergente como se muestra
en la figura siguiente.
Ahora, debajo de las plantillas en el lado izquierdo, habrá dos opciones de idioma para crear el sitio web.
Elija Visual C # y seleccione ASP.NET Empty Web Site .
Seleccione la carpeta donde desea guardar el nuevo sitio web en su sistema. Luego presione OK y
pronto aparecerá el Explorador de soluciones en su pantalla que contiene todos los archivos web.
Haga clic derecho en Default.aspx en el Explorador de soluciones y elija Ver en el navegador para ver el
sitio web predeterminado de ASP.NET en el navegador. Pronto su nuevo sitio web ASP.NET se abrirá en
el navegador web, como se muestra en la siguiente captura de pantalla.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 58/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
.aspx es, de hecho, la extensión de archivo principal utilizada en los sitios web ASP.NET. Visual Studio
crea de forma predeterminada todas las páginas necesarias para un sitio web básico, como la página de
inicio y la página Acerca de nosotros , donde puede colocar su contenido convenientemente. El código
del sitio web se genera automáticamente aquí y también se puede ver.
Control LINQDataSource
Es posible ACTUALIZAR, INSERTAR y ELIMINAR datos en las páginas del sitio web ASP.NET con la
ayuda del control LINQDataSource. No hay absolutamente ninguna necesidad de especificación de
comandos SQL ya que el control LINQDataSource emplea comandos creados dinámicamente para tales
operaciones.
El control permite a un usuario hacer uso de LINQ en una página web ASP.NET convenientemente
mediante la configuración de propiedades en el texto marcado. LINQDataSource es muy similar al de
controles como SqlDataSource y ObjectDataSource, ya que se puede usar para vincular otros controles
ASP.NET presentes en una página a una fuente de datos. Por lo tanto, debemos tener una base de
datos para explicar las diversas funciones invocadas por el control LINQDataSource.
Antes de comenzar a explicar el uso del control en el formulario de la página web ASP.NET, es esencial
abrir Microsoft Visual Studio Toolbox y arrastrar y soltar el control LINQDataSource a la página .aspx del
sitio web ASP.NET como se muestra a continuación.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 59/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
El siguiente paso es configurar LINQDataSource seleccionando todas las columnas para el registro del
empleado.
Ahora agregue un control GridView a la página .aspx y configúrelo como se muestra en la figura
siguiente. El control GridView es potente y ofrece flexibilidad para trabajar con los datos. Poco después
de configurar el control, aparecerá en el navegador.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 60/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
La codificación que se puede ver ahora en su pantalla para la página .aspx será:
<!DOCTYPE html>
<html>
<head runat = "server">
<title></title>
</head>
<body>
<form id = "form1" runat = "server">
<div>
<asp:GridView ID = "GridView1" runat = "server" AutoGenerateColumns = "False"
</asp:GridView>
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 61/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
<br />
</div>
</asp:LINQDataSource>
</form>
</body>
</html>
Aquí debe tenerse en cuenta que es vital establecer la propiedad ContextTypeName a la de la clase que
representa la base de datos. Por ejemplo, aquí se proporciona como
LINQWebApp1.AdventureWorksDataContext ya que esta acción hará la conexión necesaria entre
LINQDataSource y la base de datos.
<asp:LINQDataSource
ContextTypeName = "LINQWebApp1.AdventureWorksDataContext"
TableName = "Contacts"
EnableUpdate = "true"
EnableInsert = "true"
EnableDelete = "true"
ID = "LINQDataSource1"
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 62/63
8/11/2019 LINQ - Guía rápida - Tutorialspoint
runat = "server">
</asp:LINQDataSource>
Ahora, dado que hay varias filas y columnas, es mejor agregar otro control en su formulario .aspx
denominado Vista detallada o Control maestro debajo del control Vista de cuadrícula para mostrar solo
los detalles de una fila seleccionada de la cuadrícula. Elija las tareas de Vista detallada desde el control
Vista detallada y seleccione las casillas de verificación como se muestra a continuación.
Ahora, solo guarde los cambios y presione Ctrl + F5 para ver la página en su navegador donde ahora es
posible eliminar, actualizar e insertar cualquier registro en el control de vista detallada.
https://www.tutorialspoint.com/linq/linq_quick_guide.htm 63/63