Está en la página 1de 41

Contents

LINQ en Visual Basic


Introducción a LINQ
Procedimiento para consultar una base de datos mediante LINQ
Procedimiento para llamar a un procedimiento almacenado mediante LINQ
Procedimiento para modificar datos en una base de datos mediante LINQ
Procedimiento para combinar datos con LINQ mediante cláusulas Join
Procedimiento para ordenar los resultados de una consulta mediante LINQ
Procedimiento para filtrar los resultados de una consulta mediante LINQ
Procedimiento para hacer el recuento, la suma o el promedio de datos mediante
LINQ
Procedimiento para buscar los valores máximo y mínimo en el resultado de una
consulta mediante LINQ
Procedimiento para devolver el resultado de una consulta con LINQ como tipo
específico
LINQ en Visual Basic
20/05/2021 • 2 minutes to read

Esta sección contiene información general, ejemplos e información general que le ayudará a entender y usar
Visual Basic y Language-Integrated Query (LINQ).

En esta sección
Introducción a LINQ en Visual Basic
Proporciona una introducción a los proveedores, operadores, estructuras de consulta y características de
lenguaje de LINQ.
Cómo: Consultar una base de datos
Proporciona un ejemplo de cómo conectarse a una base de datos de SQL Server y ejecutar una consulta
mediante LINQ.
Cómo: Llamar a un procedimiento almacenado
Proporciona un ejemplo de cómo conectarse a una base de datos de SQL Server y llamar a un procedimiento
almacenado mediante LINQ.
Cómo: Modificar datos en una bases de datos
Proporciona un ejemplo de cómo conectarse a una base de datos de SQL Server y recuperar y modificar datos
mediante LINQ.
Cómo: Combinar datos con cláusulas Join
Proporciona ejemplos de cómo combinar datos de una manera similar a las combinaciones de la base de datos
mediante LINQ.
Cómo: Ordenar los resultados de una consulta
Proporciona un ejemplo de cómo ordenar los resultados de una consulta mediante LINQ.
Cómo: Filtrar los resultados de una consulta
Proporciona un ejemplo de cómo incluir criterios de búsqueda en una consulta mediante LINQ.
Cómo: Hacer el recuento, la suma o el promedio de datos
Proporciona ejemplos de cómo incluir funciones de agregado para realizar el recuento, la suma o el promedio
de los datos devueltos por una consulta mediante LINQ.
Cómo: Buscar los valores máximo y mínimo en el resultado de una consulta
Proporciona ejemplos de cómo incluir funciones de agregado para determinar los valores mínimo y máximo de
los datos devueltos por una consulta mediante LINQ.
Procedimiento para devolver el resultado de una consulta con LINQ como tipo específico
Proporciona un ejemplo de cómo devolver los resultados de una consulta LINQ como un tipo específico en
lugar de como un tipo anónimo.

Consulte también
LINQ (Language Integrated Query)
Información general sobre LINQ to XML en Visual Basic
Información general de LINQ to DataSet
LINQ to SQL
Introducción a LINQ en Visual Basic
31/07/2021 • 20 minutes to read

Language-Integrated Query (LINQ) agrega funcionalidades de consulta a Visual Basic y proporciona


funcionalidades sencillas y eficaces cuando se trabaja con todo tipo de datos. En lugar de enviar una consulta a
una base de datos para procesarla o trabajar con una sintaxis de consulta diferente para cada tipo de datos que
está buscando, LINQ introduce consultas como parte del lenguaje Visual Basic. Utiliza una sintaxis unificada
independientemente del tipo de datos.
LINQ permite consultar datos de una base de datos de SQL Server, XML, matrices y colecciones en memoria,
conjuntos de datos ADO.NET o cualquier otro origen de datos remoto o local que admita LINQ. Puede hacer
todo esto con elementos comunes Visual Basic lenguaje. Dado que las consultas se escriben en el Visual Basic,
los resultados de la consulta se devuelven como objetos fuertemente escritos. Estos objetos son compatibles
con IntelliSense, lo que le permite escribir código más rápidamente y detectar errores en las consultas en
tiempo de compilación en lugar de en tiempo de ejecución. Las consultas LINQ se pueden utilizar como el
origen de consultas adicionales para refinar los resultados. También se pueden enlazar a controles para que los
usuarios puedan ver y modificar fácilmente los resultados de la consulta.
Por ejemplo, en el siguiente ejemplo de código se muestra una consulta LINQ que devuelve una lista de clientes
de una colección y los agrupa basándose en su ubicación.

' Obtain a list of customers.


Dim customers As List(Of Customer) = GetCustomers()

' Return customers that are grouped based on country.


Dim countries = From cust In customers
Order By cust.Country, cust.City
Group By CountryName = cust.Country
Into CustomersInCountry = Group, Count()
Order By CountryName

' Output the results.


For Each country In countries
Debug.WriteLine(country.CountryName & " count=" & country.Count)

For Each customer In country.CustomersInCountry


Debug.WriteLine(" " & customer.CompanyName & " " & customer.City)
Next
Next

' Output:
' Canada count=2
' Contoso, Ltd Halifax
' Fabrikam, Inc. Vancouver
' United States count=1
' Margie's Travel Redmond

Ejecución de los ejemplos


Para ejecutar los ejemplos de la introducción y de la sección Estructura de una consulta LINQ, incluya el código
siguiente, que devuelve listas de clientes y pedidos.
' Return a list of customers.
Private Function GetCustomers() As List(Of Customer)
Return New List(Of Customer) From
{
New Customer With {.CustomerID = 1, .CompanyName = "Contoso, Ltd", .City = "Halifax", .Country =
"Canada"},
New Customer With {.CustomerID = 2, .CompanyName = "Margie's Travel", .City = "Redmond",
.Country = "United States"},
New Customer With {.CustomerID = 3, .CompanyName = "Fabrikam, Inc.", .City = "Vancouver",
.Country = "Canada"}
}
End Function

' Return a list of orders.


Private Function GetOrders() As List(Of Order)
Return New List(Of Order) From
{
New Order With {.CustomerID = 1, .Amount = "200.00"},
New Order With {.CustomerID = 3, .Amount = "600.00"},
New Order With {.CustomerID = 1, .Amount = "300.00"},
New Order With {.CustomerID = 2, .Amount = "100.00"},
New Order With {.CustomerID = 3, .Amount = "800.00"}
}
End Function

' Customer Class.


Private Class Customer
Public Property CustomerID As Integer
Public Property CompanyName As String
Public Property City As String
Public Property Country As String
End Class

' Order Class.


Private Class Order
Public Property CustomerID As Integer
Public Property Amount As Decimal
End Class

Proveedores LINQ
Un proveedor LINQ asigna las consultas Visual Basic LINQ al origen de datos que se está consultando. Cuando
usted escribe una consulta LINQ, el proveedor toma esa consulta y la traduce en comandos que podrá ejecutar
el origen de datos. El proveedor también convierte los datos del origen en los objetos que forman el resultado
de su consulta. Por último, convierte los objetos en datos cuando envía actualizaciones al origen de datos.
Visual Basic incluye los siguientes proveedores LINQ.

P RO VEEDO R DESC RIP C IÓ N


P RO VEEDO R DESC RIP C IÓ N

LINQ to Objects El proveedor LINQ to Objects le permite consultar las


matrices y colecciones en memoria. Si un objeto es
compatible con las interfaces IEnumerable o
IEnumerable<T>, el proveedor LINQ to Objects le permite
consultarlo.

Puede habilitar el proveedor de LINQ to Objects importando


el espacio de nombres , que se importa de forma
predeterminada para todos System.Linq Visual Basic
proyectos.

Para obtener más información sobre el LINQ to Objects, vea


LINQ to Objects.

LINQ a SQL El proveedor LINQ to SQL le permite consultar y modificar


datos en una base de datos de SQL Server. Esto hace que
sea fácil asignar el modelo de objetos de una aplicación a las
tablas y los objetos de una base de datos.

Visual Basic facilita el trabajo con LINQ to SQL mediante la


inclusión de Object Relational Designer (O/R Designer). Este
diseñador se usa para crear un modelo de objetos en una
aplicación que se asigna a los objetos de una base de datos.
El Diseñador de O/R también proporciona funcionalidad para
asignar procedimientos almacenados y funciones al objeto ,
que administra la comunicación con la base de datos y
almacena el estado para las comprobaciones de
simultaneidad DataContext optimista.

Para obtener más información sobre el LINQ to SQL, vea


LINQ to SQL. Para obtener más información sobre el Object
Relational Designer, vea LINQ to SQL Tools en Visual Studio.

LINQ to XML El proveedor LINQ to XML le permite consultar y modificar


XML. Puede modificar XML en memoria o puede cargar XML
desde un archivo y guardarlo en él.

Además, el proveedor LINQ to XML permite literales XML y


propiedades de eje XML que permiten escribir XML
directamente en el Visual Basic código. Para obtener más
información, vea XML.

LINQ to DataSet El LINQ to DataSet de datos le permite consultar y actualizar


datos en un conjunto de ADO.NET datos. Puede agregar la
eficacia de LINQ a las aplicaciones que utilicen conjuntos de
datos con el fin de simplificar y ampliar las funcionalidades
de consulta, agregado y actualización de los datos del
conjunto de datos.

Para más información, vea LINQ to DataSet.

Estructura de una consulta LINQ


Una consulta LINQ, a menudo denominada expresión de consulta , consta de una combinación de cláusulas de
consulta que identifican los orígenes de datos y las variables de iteración de la consulta. Una expresión de
consulta también incluye instrucciones para ordenar, filtrar, agrupar y combinar, o cálculos para aplicar al origen
de datos. La sintaxis de las expresiones de consulta se parece a la sintaxis de SQL; por lo tanto, le puede resultar
familiar gran parte de la sintaxis.
Una expresión de consulta comienza con una cláusula From . Esta cláusula identifica los datos de origen de una
consulta y las variables que se usan para referirse individualmente a cada elemento de los datos de origen. Estas
variables son variables de intervalo con nombre o variables de iteración. La cláusula From se requiere para una
consulta, excepto para consultas Aggregate , donde la cláusula From es opcional. Una vez que se hayan
identificado el ámbito y el origen de la consulta en las cláusulas From o Aggregate , puede incluir cualquier
combinación de cláusulas de consulta para refinar la consulta. Para obtener más información sobre las cláusulas
de consulta, vea Visual Basic operadores de consulta LINQ más adelante en este tema. Por ejemplo, la siguiente
consulta identifica una colección de origen de datos de cliente como la variable customers y una variable de
iteración denominada cust .

Dim customers = GetCustomers()

Dim queryResults = From cust In customers

For Each result In queryResults


Debug.WriteLine(result.CompanyName & " " & result.Country)
Next

' Output:
' Contoso, Ltd Canada
' Margie's Travel United States
' Fabrikam, Inc. Canada

Este ejemplo es una consulta válida por sí misma; sin embargo, la consulta es mucho más eficaz cuando agrega
más cláusulas de consulta para refinar los resultados. Por ejemplo, puede agregar una cláusula Where para
filtrar los resultados mediante uno o varios valores. Las expresiones de consulta son una sola línea de código;
puede simplemente anexar cláusulas de consulta adicionales al final de la consulta. Puede dividir una consulta
en varias líneas de texto para mejorar la legibilidad mediante el carácter de continuación de línea de subrayado (
_ ). En el siguiente ejemplo de código se muestra una consulta que incluye una cláusula Where .

Dim queryResults = From cust In customers


Where cust.Country = "Canada"

Otra cláusula de consulta eficaz es la cláusula Select , que sólo le permite devolver los campos seleccionados
del origen de datos. Las consultas LINQ devuelven colecciones enumerables de objetos fuertemente tipados.
Una consulta puede devolver una colección de tipos anónimos o de tipos con nombre. Puede utilizar la cláusula
Select para que solo se devuelva un único campo del origen de datos. Al hacerlo, el tipo de la colección
devuelto es el tipo de ese campo único. También puede utilizar la cláusula Select para devolver varios campos
del origen de datos. Al hacerlo, el tipo de la colección devuelto es un nuevo tipo anónimo. También puede hacer
coincidir los campos devueltos por la consulta a los campos de un tipo con nombre especificado. En el siguiente
ejemplo de código se muestra una expresión de consulta que devuelve una colección de tipos anónimos con
miembros rellenados con datos de los campos seleccionados del origen de datos.

Dim queryResults = From cust In customers


Where cust.Country = "Canada"
Select cust.CompanyName, cust.Country

Las consultas LINQ también pueden utilizarse para combinar varios orígenes de datos y devolver un único
resultado. Esto puede hacerse con una o más cláusulas From o mediante las cláusulas de consulta Join o
Group Join . En el siguiente ejemplo de código se muestra una expresión de consulta que combina datos de
clientes y pedidos y devuelve una colección de tipos anónimos que contiene datos de clientes y pedidos.
Dim customers = GetCustomers()
Dim orders = GetOrders()

Dim queryResults = From cust In customers, ord In orders


Where cust.CustomerID = ord.CustomerID
Select cust, ord

For Each result In queryResults


Debug.WriteLine(result.ord.Amount & " " & result.ord.CustomerID & " " & result.cust.CompanyName)
Next

' Output:
' 200.00 1 Contoso, Ltd
' 300.00 1 Contoso, Ltd
' 100.00 2 Margie's Travel
' 600.00 3 Fabrikam, Inc.
' 800.00 3 Fabrikam, Inc.

Puede utilizar la cláusula Group Join para crear un resultado de consulta jerárquica que contenga una colección
de objetos Customer. Cada objeto Customer tiene una propiedad que contiene una colección de todos los
pedidos para ese cliente. En el siguiente ejemplo de código se muestra una expresión de consulta que combina
datos de clientes y pedidos como un resultado jerárquico y devuelve una colección de tipos anónimos. La
consulta devuelve un tipo que incluye una propiedad CustomerOrders que contiene una colección de datos de
pedidos del cliente. También incluye una propiedad OrderTotal que contiene la suma de los totales de todos los
pedidos de ese cliente. (Esta consulta es equivalente a una combinación externa izquierda).

Dim customers = GetCustomers()


Dim orders = GetOrders()

Dim queryResults = From cust In customers


Group Join ord In orders On
cust.CustomerID Equals ord.CustomerID
Into CustomerOrders = Group,
OrderTotal = Sum(ord.Amount)
Select cust.CompanyName, cust.CustomerID,
CustomerOrders, OrderTotal

For Each result In queryResults


Debug.WriteLine(result.OrderTotal & " " & result.CustomerID & " " & result.CompanyName)
For Each ordResult In result.CustomerOrders
Debug.WriteLine(" " & ordResult.Amount)
Next
Next

' Output:
' 500.00 1 Contoso, Ltd
' 200.00
' 300.00
' 100.00 2 Margie's Travel
' 100.00
' 1400.00 3 Fabrikam, Inc.
' 600.00
' 800.00

Hay varios operadores de consulta LINQ adicionales que puede utilizar para crear expresiones de consulta
eficaces. En la siguiente sección de este tema se describen las diversas cláusulas de consulta que puede incluir
en una expresión de consulta. Para obtener más información Visual Basic cláusulas de consulta, vea Consultas.

Visual Basic Operadores de consulta LINQ


Las clases en el espacio de nombres System.Linq y los otros espacios de nombres compatibles con consultas
LINQ incluyen métodos a los que puede llamar para crear y refinar las consultas en función de las necesidades
de su aplicación. Visual Basic incluye palabras clave para las siguientes cláusulas de consulta comunes. Para
obtener más información Visual Basic cláusulas de consulta, vea Consultas.
Cláusula From
Se requiere From una cláusula o Aggregate una cláusula para iniciar una consulta. Una cláusula From
especifica una colección de origen y una variable de iteración de una consulta. Por ejemplo:

' Returns the company name for all customers for which
' the Country is equal to "Canada".
Dim names = From cust In customers
Where cust.Country = "Canada"
Select cust.CompanyName

Select (cláusula)
Opcional. Una Select cláusula declara un conjunto de variables de iteración para una consulta. Por ejemplo:

' Returns the company name and ID value for each


' customer as a collection of a new anonymous type.
Dim customerList = From cust In customers
Select cust.CompanyName, cust.CustomerID

Si no se especifica una cláusula Select , las variables de iteración de la consulta se componen de las variables
de iteración especificadas por la cláusula From o Aggregate .
Cláusula WHERE
Opcional. Una Where cláusula especifica una condición de filtrado para una consulta. Por ejemplo:

' Returns all product names for which the Category of


' the product is "Beverages".
Dim names = From product In products
Where product.Category = "Beverages"
Select product.Name

Order By (cláusula)
Opcional. Una Order By cláusula especifica el criterio de ordenación de las columnas de una consulta. Por
ejemplo:

' Returns a list of books sorted by price in


' ascending order.
Dim titlesAscendingPrice = From b In books
Order By b.price

Join (cláusula)
Opcional. Una Join cláusula combina dos colecciones en una sola colección. Por ejemplo:

' Returns a combined collection of all of the


' processes currently running and a descriptive
' name for the process taken from a list of
' descriptive names.
Dim processes = From proc In Process.GetProcesses
Join desc In processDescriptions
On proc.ProcessName Equals desc.ProcessName
Select proc.ProcessName, proc.Id, desc.Description
Group By (cláusula)
Opcional. Una Group By cláusula agrupa los elementos de un resultado de la consulta. Se puede usar para
aplicar funciones de agregado a cada grupo. Por ejemplo:

' Returns a list of orders grouped by the order date


' and sorted in ascending order by the order date.
Dim orderList = From order In orders
Order By order.OrderDate
Group By OrderDate = order.OrderDate
Into OrdersByDate = Group

Group Join (cláusula)


Opcional. Una Group Join cláusula combina dos colecciones en una única colección jerárquica. Por ejemplo:

' Returns a combined collection of customers and


' customer orders.
Dim customerList = From cust In customers
Group Join ord In orders On
cust.CustomerID Equals ord.CustomerID
Into CustomerOrders = Group,
TotalOfOrders = Sum(ord.Amount)
Select cust.CompanyName, cust.CustomerID,
CustomerOrders, TotalOfOrders

Aggregate (cláusula)
Se requiere Aggregate una cláusula o From una cláusula para iniciar una consulta. Una cláusula Aggregate
aplica una o más funciones agregadas a una colección. Por ejemplo, puede usar la cláusula para calcular una
suma para todos los elementos devueltos por una Aggregate consulta, como en el ejemplo siguiente.

' Returns the sum of all order amounts.


Dim orderTotal = Aggregate order In orders
Into Sum(order.Amount)

También puede utilizar la cláusula Aggregate para modificar una consulta. Por ejemplo, puede utilizar la cláusula
Aggregate para realizar un cálculo en una colección de consultas relacionada. Por ejemplo:

' Returns the customer company name and largest


' order amount for each customer.
Dim customerMax = From cust In customers
Aggregate order In cust.Orders
Into MaxOrder = Max(order.Amount)
Select cust.CompanyName, MaxOrder

Let (cláusula)
Opcional. Una Let cláusula calcula un valor y lo asigna a una nueva variable de la consulta. Por ejemplo:

' Returns a list of products with a calculation of


' a ten percent discount.
Dim discountedProducts = From prod In products
Let Discount = prod.UnitPrice * 0.1
Where Discount >= 50
Select prod.Name, prod.UnitPrice, Discount

Distinct (cláusula)
Opcional. Una cláusula restringe los valores de la variable de iteración Distinct actual para eliminar los valores
duplicados en los resultados de la consulta. Por ejemplo:

' Returns a list of cities with no duplicate entries.


Dim cities = From item In customers
Select item.City
Distinct

Skip (cláusula)
Opcional. Una Skip cláusula omite un número especificado de elementos de una colección y, a continuación,
devuelve los elementos restantes. Por ejemplo:

' Returns a list of customers. The first 10 customers


' are ignored and the remaining customers are
' returned.
Dim customerList = From cust In customers
Skip 10

Skip While (cláusula)


Opcional. Una Skip While cláusula omite los elementos de una colección siempre que una condición
especificada sea y, a continuación, true devuelva los elementos restantes. Por ejemplo:

' Returns a list of customers. The query ignores all


' customers until the first customer for whom
' IsSubscriber returns false. That customer and all
' remaining customers are returned.
Dim customerList = From cust In customers
Skip While IsSubscriber(cust)

Take (cláusula)
Opcional. Una Take cláusula devuelve un número especificado de elementos contiguos desde el inicio de una
colección. Por ejemplo:

' Returns the first 10 customers.


Dim customerList = From cust In customers
Take 10

Take While (cláusula)


Opcional. Una Take While cláusula incluye elementos de una colección siempre y cuando una condición
especificada sea y true omita los elementos restantes. Por ejemplo:

' Returns a list of customers. The query returns


' customers until the first customer for whom
' HasOrders returns false. That customer and all
' remaining customers are ignored.
Dim customersWithOrders = From cust In customers
Order By cust.Orders.Count Descending
Take While HasOrders(cust)

Uso de características de consulta LINQ adicionales


Puede usar características de consulta LINQ adicionales llamando a los miembros de los tipos de enumerables y
consultables proporcionados por LINQ. Puede utilizar estas funciones adicionales llamando a un operador de
consulta determinado en el resultado de una expresión de consulta. Por ejemplo, en el ejemplo siguiente se usa
el método para combinar los resultados Enumerable.Union de dos consultas en un resultado de consulta. Utiliza
el método Enumerable.ToList para devolver el resultado de la consulta como una lista genérica.

Public Function GetAllCustomers() As List(Of Customer)


Dim customers1 = From cust In domesticCustomers
Dim customers2 = From cust In internationalCustomers

Dim customerList = customers1.Union(customers2)

Return customerList.ToList()
End Function

Para obtener más información sobre las funcionalidades de LINQ adicionales, vea Standard Query Operators
Overview.

Conectar a una base de datos mediante LINQ to SQL


En Visual Basic, identifique los objetos de base de datos SQL Server, como tablas, vistas y procedimientos
almacenados, a los que desea acceder mediante un archivo LINQ to SQL datos. Un archivo LINQ to SQL tiene
una extensión .dbml.
Cuando tenga una conexión válida a una base de SQL Server de datos, puede agregar una plantilla de
elemento LINQ to SQL Classes al proyecto. De este modo se mostrará el Object Relational Designer (O/R
Designer). El Diseñador de O/R permite arrastrar los elementos a los que desea acceder en el código desde el
Explorador de servidores Explorador de bases de datos a la / superficie del diseñador. El archivo LINQ to SQL
agrega un objeto DataContext al proyecto. Este objeto incluye propiedades y colecciones para las tablas y vistas
a las que desea acceder y métodos para los procedimientos almacenados a los que desea llamar. Después de
haber guardado los cambios en el archivo LINQ to SQL (.dbml), puede acceder a estos objetos en el código
haciendo referencia al objeto DataContext definido por el O/R Designer. El nombre del objeto DataContext del
proyecto se determina en función del nombre del archivo LINQ to SQL. Por ejemplo, un archivo LINQ to SQL
denominado Northwind.dbml creará un objeto DataContext denominado NorthwindDataContext .
Para obtener ejemplos con instrucciones paso a paso, vea Cómo: Consultar una base de datos y Cómo: Llamar a
un procedimiento almacenado.

Visual Basic que admiten LINQ


Visual Basic incluye otras características importantes que hacen que el uso de LINQ sea sencillo y reducen la
cantidad de código que debe escribir para realizar consultas LINQ. que incluyen la siguiente información:
Tipos anónimos , que permiten crear un nuevo tipo basado en un resultado de consulta.
Variables con tipo implícito, que permiten aplazar la especificación de un tipo y permiten al
compilador deducir el tipo en función del resultado de la consulta.
Métodos de extensión , que permiten extender un tipo existente con sus propios métodos sin modificar
el propio tipo.
Para obtener más información, Visual Basic características que admiten LINQ.

Ejecución de consultas diferida e inmediata


La ejecución de una consulta se realiza de manera independiente con respecto a la creación de una consulta.
Después de crear una consulta, un mecanismo independiente desencadena su ejecución. Una consulta se puede
ejecutar en cuanto se define (ejecución inmediata), o la definición se puede almacenar y la consulta se puede
ejecutar más adelante (ejecución diferida).
De forma predeterminada, cuando crea una consulta, la propia consulta no se ejecuta inmediatamente. En su
lugar, la definición de la consulta se almacena en la variable que se utiliza para hacer referencia al resultado de la
consulta. Cuando se accede a la variable de resultado de la consulta más adelante en el código, como, por
ejemplo, en un bucle For…Next , se ejecuta la consulta. Este proceso se conoce como ejecución diferida.
Las consultas también se pueden ejecutar cuando se definen, lo que se conoce como ejecución inmediata. Puede
desencadenar la ejecución inmediata aplicando un método que requiera acceso a elementos individuales del
resultado de la consulta. Esto puede ser el resultado de incluir una función de agregado, como Count , Sum ,
Average , Min o Max . Para obtener más información sobre las funciones de agregado, vea Aggregate Clause.

El uso de los métodos ToList o ToArray también fuerza la ejecución inmediata. Esto le puede resultar útil
cuando desee ejecutar la consulta inmediatamente y almacenar en caché los resultados. Para obtener más
información sobre estos métodos, vea Convertir tipos de datos.
Para obtener más información sobre la ejecución de consultas, vea Escribir la primera consulta LINQ.

XML en Visual Basic


Las características XML de Visual Basic incluyen literales XML y propiedades del eje XML, que permiten crear,
acceder, consultar y modificar XML fácilmente en el código. Los literales XML le permiten escribir XML
directamente en el código. El compilador de Visual Basic trata el XML como un objeto de datos de primera clase.
En el siguiente ejemplo de código se muestra cómo crear un elemento XML, acceder a sus subelementos y
atributos y consultar el contenido del elemento mediante LINQ.

' Place Imports statements at the top of your program.


Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

Sub SampleTransform()

' Create test by using a global XML namespace prefix.

Dim contact =
<ns:contact>
<ns:name>Patrick Hines</ns:name>
<ns:phone ns:type="home">206-555-0144</ns:phone>
<ns:phone ns:type="work">425-555-0145</ns:phone>
</ns:contact>

Dim phoneTypes =
<phoneTypes>
<%= From phone In contact.<ns:phone>
Select <type><%= phone.@ns:type %></type>
%>
</phoneTypes>

Console.WriteLine(phoneTypes)
End Sub

End Module

Para obtener más información, vea XML.

Recursos relacionados
T EM A DESC RIP C IÓ N

XML Describe las características XML de Visual Basic que se


pueden consultar y que permiten incluir XML como objetos
de datos de primera clase en el Visual Basic código.

Consultas Proporciona información de referencia sobre las cláusulas de


consulta que están disponibles en Visual Basic.

LINQ (Language Integrated Query) Incluye información general, instrucciones de programación


y ejemplos de LINQ.

LINQ to SQL Incluye información general, guía de programación y


ejemplos de LINQ to SQL.

LINQ to Objects Incluye información general, guía de programación y


ejemplos de LINQ to Objects.

LINQ to ADO.NET (Página de portal) Incluye vínculos a información general, instrucciones de


programación y ejemplos para LINQ to ADO.NET.

LINQ to XML Incluye información general, guía de programación y


ejemplos de LINQ to XML.

Temas de tutoriales y cómo


Cómo: Consultar una base de datos
Cómo: Llamar a un procedimiento almacenado
Cómo: Modificar datos en una bases de datos
Cómo: Combinar datos con cláusulas Join
Cómo: Ordenar los resultados de una consulta
Cómo: Filtrar los resultados de una consulta
Cómo: Hacer el recuento, la suma o el promedio de datos
Cómo: Buscar los valores máximo y mínimo en el resultado de una consulta
Cómo: Asignar procedimientos almacenados para realizar actualizaciones, inserciones y eliminaciones (Object
Relational Designer)

Capítulos de libros destacados


Capítulo 17: LINQ in Programming Visual Basic 2008

Consulte también
LINQ (Language Integrated Query)
Información general sobre LINQ to XML en Visual Basic
Información general de LINQ to DataSet
LINQ to SQL
Herramientas LINQ to SQL en Visual Studio
DataContext (Métodos) (Object Relational Designer)
Cómo: Consultar una base de datos usando LINQ
(Visual Basic)
20/05/2021 • 3 minutes to read

Language-Integrated Query (LINQ) facilita el acceso a la información de base de datos y la ejecución de


consultas.
En el ejemplo siguiente se muestra cómo crear una nueva aplicación que realiza consultas en una base de datos
de SQL Server.
En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.

NOTE
Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de
usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se
utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para crear una conexión a una base de datos


1. En Visual Studio, Abra Explorador de ser vidores / Explorador de bases de datos haciendo clic en
Explorador de ser vidores / Explorador de bases de datos en el menú Ver .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y, a continuación, haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.

Para agregar un proyecto que contiene un archivo LINQ to SQL


1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . El Object Relational Designer (Object
Relational Designer) se abre para el archivo Northwind. dbml.

Para agregar tablas que se van a consultar en Object Relational


Designer
1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Tablas .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo
Northwind. dbml que agregó anteriormente.
2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador. Haga clic en la tabla
Orders y arrástrela hasta el panel izquierdo del diseñador.
El diseñador crea Customer objetos y nuevos Order para el proyecto. Observe que el diseñador detecta
automáticamente las relaciones entre las tablas y crea las propiedades secundarias de los objetos
relacionados. Por ejemplo, IntelliSense mostrará que el Customer objeto tiene una Orders propiedad
para todos los pedidos relacionados con ese cliente.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.

Para agregar código para consultar la base de datos y mostrar los


resultados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Haga doble clic en Form1 para agregar código al Load evento del formulario.
3. Al agregar tablas a Object Relational Designer, el diseñador agregó un DataContext objeto para el
proyecto. Este objeto contiene el código que debe tener para obtener acceso a esas tablas, además de
colecciones y objetos individuales para cada tabla. El DataContext nombre del objeto para el proyecto se
basa en el nombre del archivo. dbml. Para este proyecto, el DataContext objeto se denomina
northwindDataContext .

Puede crear una instancia de en el DataContext código y consultar las tablas especificadas por Object
Relational Designer.
Agregue el código siguiente al Load evento para consultar las tablas que se exponen como propiedades
de su contexto de datos.

Dim db As New northwindDataContext

Dim londonCusts = From cust In db.Customers


Where cust.City = "London"
Select cust

DataGridView1.DataSource = londonCusts

4. Presione F5 para ejecutar el proyecto y ver los resultados.


5. A continuación se muestran algunas consultas adicionales que puede probar:

Dim londonCustOrders = From cust In db.Customers,


ord In cust.Orders
Where cust.City = "London"
Order By ord.OrderID
Select cust.City, ord.OrderID, ord.OrderDate

DataGridView1.DataSource = londonCustOrders
Dim custs = From cust In db.Customers
Where cust.Country = "France" And
(cust.CompanyName.StartsWith("F") Or
cust.CompanyName.StartsWith("V"))
Order By cust.CompanyName
Select cust.CompanyName, cust.City

DataGridView1.DataSource = custs

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)
Cómo: Llamar a un procedimiento almacenado
usando LINQ (Visual Basic)
20/05/2021 • 3 minutes to read

Language-Integrated Query (LINQ) facilita el acceso a la información de base de datos, incluidos los objetos de
base de datos, como los procedimientos almacenados.
En el ejemplo siguiente se muestra cómo crear una aplicación que llama a un procedimiento almacenado en una
base de datos de SQL Server. En el ejemplo se muestra cómo llamar a dos procedimientos almacenados
diferentes en la base de datos. Cada procedimiento devuelve los resultados de una consulta. Un procedimiento
toma parámetros de entrada y el otro procedimiento no toma parámetros.
En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.

NOTE
Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de
usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se
utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para crear una conexión a una base de datos


1. En Visual Studio, Abra Explorador de ser vidores / Explorador de bases de datos haciendo clic en
Explorador de ser vidores / Explorador de bases de datos en el menú Ver .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y, a continuación, haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.
Para agregar un proyecto que contiene un archivo LINQ to SQL
1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . El Object Relational Designer (Object
Relational Designer) se abre para el archivo Northwind. dbml.
Para agregar procedimientos almacenados a Object Relational Designer
1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Procedimientos almacenados .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo
Northwind. dbml que agregó anteriormente.
2. Haga clic en el procedimiento almacenado sales by Year y arrástrelo hasta el panel derecho del
diseñador. Haga clic en el procedimiento almacenado de los diez productos más caros y arrástrelo al
panel derecho del diseñador.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.
Para agregar código para mostrar los resultados de los procedimientos almacenados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Haga doble clic en Form1 para agregar código a su Load evento.
3. Cuando agregó procedimientos almacenados a Object Relational Designer, el diseñador agregó un
DataContext objeto para el proyecto. Este objeto contiene el código que debe tener para obtener acceso a
esos procedimientos. El DataContext nombre del objeto para el proyecto se basa en el nombre del
archivo. dbml. Para este proyecto, el DataContext objeto se denomina northwindDataContext .
Puede crear una instancia de DataContext en el código y llamar a los métodos de procedimiento
almacenado especificados por Object Relational Designer. Para enlazar con el DataGridView objeto, puede
que tenga que forzar la ejecución inmediata de la consulta llamando al ToList método en los resultados
del procedimiento almacenado.
Agregue el código siguiente al Load evento para llamar a cualquiera de los procedimientos almacenados
que se exponen como métodos para el contexto de datos.

Dim db As New northwindDataContext

' Display the results of the Sales_by_Year stored procedure.


DataGridView1.DataSource =
db.Sales_by_Year(#1/1/1996#, #1/1/2007#).ToList()

' Display the results of the Ten_Most_Expensive_Products


' stored procedure.

DataGridView1.DataSource =
db.Ten_Most_Expensive_Products.ToList()

4. Presione F5 para ejecutar el proyecto y ver los resultados.

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)
Cómo: Asignar procedimientos almacenados para realizar actualizaciones, inserciones y eliminaciones
(Object Relational Designer)
Cómo: Modificar datos en una base de datos
usando LINQ (Visual Basic)
20/05/2021 • 4 minutes to read

Las consultas de Language-Integrated Query (LINQ) facilitan el acceso a la información de base de datos y la
modificación de los valores de la base de datos.
En el ejemplo siguiente se muestra cómo crear una nueva aplicación que recupera y actualiza la información en
una base de datos de SQL Server.
En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.
Para crear una conexión a una base de datos
1. Para abrir Explorador de ser vidores explorador de bases de datos en Visual Studio, / haga clic en el
menú Ver y, a continuación, seleccione Explorador de ser vidores / Explorador de bases de datos .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.
Para agregar un proyecto con un archivo LINQ to SQL
1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . Se abre el Object Relational Designer
(Object Relational Designer) para el northwind.dbml archivo.
Para agregar tablas que se van a consultar y modificar en el diseñador
1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Tablas .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el northwind.dbml
archivo que agregó anteriormente.
2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador.
El diseñador crea un nuevo objeto Customer para el proyecto.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.
Para agregar código con el fin de modificar la base de datos y mostrar los resultados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Al agregar tablas a Object Relational Designer, el diseñador agregó un DataContext objeto al proyecto.
Este objeto contiene código que se puede utilizar para tener acceso a la tabla customers. También
contiene código que define un objeto de cliente local y una colección de clientes para la tabla. El
DataContext nombre del objeto para el proyecto se basa en el nombre del archivo. dbml. Para este
proyecto, el DataContext objeto se denomina northwindDataContext .
Puede crear una instancia del DataContext objeto en el código y consultar y modificar la colección
customers especificada por Object Relational Designer. Los cambios que realice en la colección customers
no se reflejarán en la base de datos hasta que los envíe llamando al SubmitChanges método del
DataContext objeto.
Haga doble clic en Windows Forms, Form1, para agregar código al Load evento para consultar la tabla
Customers que se expone como una propiedad de su DataContext . Agregue el siguiente código:

Private db As northwindDataContext

Private Sub Form1_Load(ByVal sender As System.Object,


ByVal e As System.EventArgs
) Handles MyBase.Load
db = New northwindDataContext()

RefreshData()
End Sub

Private Sub RefreshData()


Dim customers = From cust In db.Customers
Where cust.City(0) = "W"
Select cust

DataGridView1.DataSource = customers
End Sub

3. En el cuadro de herramientas , arrastre tres Button controles al formulario. Seleccione el primer


Button control. En la ventana propiedades , establezca la propiedad Name del Button control en
AddButton y Text en Add . Seleccione el segundo botón y establezca la Name propiedad en
UpdateButton y la Text propiedad en Update . Seleccione el tercer botón y establezca la Name
propiedad en DeleteButton y la Text propiedad en Delete .
4. Haga doble clic en el botón Agregar para agregar código a su Click evento. Agregue el siguiente
código:

Private Sub AddButton_Click(ByVal sender As System.Object,


ByVal e As System.EventArgs
) Handles AddButton.Click
Dim cust As New Customer With {
.City = "Wellington",
.CompanyName = "Blue Yonder Airlines",
.ContactName = "Jill Frank",
.Country = "New Zealand",
.CustomerID = "JILLF"}

db.Customers.InsertOnSubmit(cust)

Try
db.SubmitChanges()
Catch
' Handle exception.
End Try

RefreshData()
End Sub

5. Haga doble clic en el botón Actualizar para agregar código a su Click evento. Agregue el siguiente
código:

Private Sub UpdateButton_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs
) Handles UpdateButton.Click
Dim updateCust = (From cust In db.Customers
Where cust.CustomerID = "JILLF").ToList()(0)

updateCust.ContactName = "Jill Shrader"


updateCust.Country = "Wales"
updateCust.CompanyName = "Red Yonder Airlines"
updateCust.City = "Cardiff"

Try
db.SubmitChanges()
Catch
' Handle exception.
End Try

RefreshData()
End Sub

6. Haga doble clic en el botón eliminar para agregar código a su Click evento. Agregue el siguiente
código:

Private Sub DeleteButton_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs
) Handles DeleteButton.Click
Dim deleteCust = (From cust In db.Customers
Where cust.CustomerID = "JILLF").ToList()(0)

db.Customers.DeleteOnSubmit(deleteCust)

Try
db.SubmitChanges()
Catch
' Handle exception.
End Try

RefreshData()
End Sub

7. Presione F5 para ejecutar el proyecto. Haga clic en Agregar para agregar un nuevo registro. Haga clic en
Actualizar para modificar el nuevo registro. Haga clic en eliminar para eliminar el nuevo registro.

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)
Cómo: Asignar procedimientos almacenados para realizar actualizaciones, inserciones y eliminaciones
(Object Relational Designer)
Cómo: Combinar datos con LINQ usando cláusulas
Join (Visual Basic)
20/05/2021 • 7 minutes to read

Visual Basic proporciona las Join Group Join cláusulas de consulta y para que pueda combinar el contenido
de varias colecciones en función de los valores comunes entre las colecciones. Estos valores se conocen como
valores de clave . Los desarrolladores familiarizados con los conceptos de bases de datos relacionales
reconocerán la Join cláusula como una combinación interna y la Group Join cláusula como, efectivamente,
una combinación externa izquierda.
En los ejemplos de este tema se muestran algunas maneras de combinar datos con las Join Group Join
cláusulas de consulta y.

Crear un proyecto y agregar datos de ejemplo


Para crear un proyecto que contenga datos y tipos de ejemplo
1. Para ejecutar los ejemplos de este tema, abra Visual Studio y agregue un nuevo proyecto de aplicación de
consola de Visual Basic. Haga doble clic en el archivo Module1. VB creado por Visual Basic.
2. Los ejemplos de este tema usan los Person Pet tipos y y los datos del ejemplo de código siguiente.
Copie este código en el Module1 módulo predeterminado creado por Visual Basic.
Private _people As List(Of Person)
Private _pets As List(Of Pet)

Function GetPeople() As List(Of Person)


If _people Is Nothing Then CreateLists()
Return _people
End Function

Function GetPets(ByVal people As List(Of Person)) As List(Of Pet)


If _pets Is Nothing Then CreateLists()
Return _pets
End Function

Private Sub CreateLists()


Dim pers As Person

_people = New List(Of Person)


_pets = New List(Of Pet)

pers = New Person With {.FirstName = "Magnus", .LastName = "Hedlund"}


_people.Add(pers)
_pets.Add(New Pet With {.Name = "Daisy", .Owner = pers})

pers = New Person With {.FirstName = "Terry", .LastName = "Adams"}


_people.Add(pers)
_pets.Add(New Pet With {.Name = "Barley", .Owner = pers})
_pets.Add(New Pet With {.Name = "Boots", .Owner = pers})
_pets.Add(New Pet With {.Name = "Blue Moon", .Owner = pers})

pers = New Person With {.FirstName = "Charlotte", .LastName = "Weiss"}


_people.Add(pers)
_pets.Add(New Pet With {.Name = "Whiskers", .Owner = pers})

' Add a person with no pets for the sake of Join examples.
_people.Add(New Person With {.FirstName = "Arlene", .LastName = "Huff"})

pers = New Person With {.FirstName = "Don", .LastName = "Hall"}


' Do not add person to people list for the sake of Join examples.
_pets.Add(New Pet With {.Name = "Spot", .Owner = pers})

' Add a pet with no owner for the sake of Join examples.
_pets.Add(New Pet With {.Name = "Unknown",
.Owner = New Person With {.FirstName = String.Empty,
.LastName = String.Empty}})
End Sub

Class Person
Public Property FirstName As String
Public Property LastName As String
End Class

Class Pet
Public Property Name As String
Public Property Owner As Person
End Class

Realizar una combinación interna mediante la cláusula join


Una combinación interna combina datos de dos colecciones. Se incluyen los elementos para los que coinciden
los valores de clave especificados. Se excluyen todos los elementos de cualquier colección que no tengan un
elemento coincidente en la otra colección.
En Visual Basic, LINQ proporciona dos opciones para realizar una combinación interna: una combinación
implícita y una combinación explícita.
Una combinación implícita especifica las colecciones que se van a combinar en una From cláusula e identifica
los campos de clave coincidentes en una Where cláusula. Visual Basic combina implícitamente las dos
colecciones basándose en los campos de clave especificados.
Puede especificar una combinación explícita mediante la Join cláusula cuando quiera ser específica de qué
campos clave usar en la combinación. En este caso, Where todavía se puede usar una cláusula para filtrar los
resultados de la consulta.
Para realizar una combinación interna mediante la cláusula join
1. Agregue el código siguiente al Module1 módulo del proyecto para ver ejemplos de una combinación
interna implícita y explícita.

Sub InnerJoinExample()
' Create two lists.
Dim people = GetPeople()
Dim pets = GetPets(people)

' Implicit Join.


Dim petOwners = From pers In people, pet In pets
Where pet.Owner Is pers
Select pers.FirstName, PetName = pet.Name

' Display grouped results.


Dim output As New System.Text.StringBuilder
For Each pers In petOwners
output.AppendFormat(
pers.FirstName & ":" & vbTab & pers.PetName & vbCrLf)
Next

Console.WriteLine(output)

' Explicit Join.


Dim petOwnersJoin = From pers In people
Join pet In pets
On pet.Owner Equals pers
Select pers.FirstName, PetName = pet.Name

' Display grouped results.


output = New System.Text.StringBuilder()
For Each pers In petOwnersJoin
output.AppendFormat(
pers.FirstName & ":" & vbTab & pers.PetName & vbCrLf)
Next

Console.WriteLine(output)

' Both queries produce the following output:


'
' Magnus: Daisy
' Terry: Barley
' Terry: Boots
' Terry: Blue Moon
' Charlotte: Whiskers
End Sub

Realizar una combinación externa izquierda mediante la cláusula


Group join
Una combinación externa izquierda incluye todos los elementos de la colección del lado izquierdo de la
combinación y solo los valores coincidentes de la colección del lado derecho de la combinación. Los elementos
de la colección del lado derecho de la combinación que no tienen un elemento coincidente en la colección del
lado izquierdo se excluyen del resultado de la consulta.
La Group Join cláusula realiza una combinación externa izquierda, en efecto. La diferencia entre lo que se
conoce normalmente como una combinación externa izquierda y lo que Group Join devuelve la cláusula es que
la Group Join cláusula agrupa los resultados de la colección del lado derecho de la combinación de cada
elemento de la colección del lado izquierdo. En una base de datos relacional, una combinación externa izquierda
devuelve un resultado no agrupado en el que cada elemento del resultado de la consulta contiene elementos
coincidentes de ambas colecciones en la combinación. En este caso, los elementos de la colección del lado
izquierdo de la combinación se repiten para cada elemento coincidente de la colección del lado derecho. Verá el
aspecto que tendrá cuando complete el procedimiento siguiente.
Puede recuperar los resultados de una Group Join consulta como un resultado no agrupado extendiendo la
consulta para devolver un elemento para cada resultado de la consulta agrupada. Para ello, debe asegurarse de
que consulta en el DefaultIfEmpty método de la colección agrupada. Esto garantiza que los elementos de la
colección del lado izquierdo de la combinación todavía se incluyen en el resultado de la consulta, incluso si no
tienen resultados coincidentes de la colección del lado derecho. Puede agregar código a la consulta para
proporcionar un valor de resultado predeterminado cuando no haya ningún valor coincidente en la colección
del lado derecho de la combinación.
Para realizar una combinación externa izquierda mediante la cláusula Group join
1. Agregue el código siguiente al Module1 módulo del proyecto para ver ejemplos de una combinación
externa izquierda agrupada y una combinación externa izquierda no agrupada.
Sub LeftOuterJoinExample()
' Create two lists.
Dim people = GetPeople()
Dim pets = GetPets(people)

' Grouped results.


Dim petOwnersGrouped = From pers In people
Group Join pet In pets
On pers Equals pet.Owner
Into PetList = Group
Select pers.FirstName, pers.LastName,
PetList

' Display grouped results.


Dim output As New System.Text.StringBuilder
For Each pers In petOwnersGrouped
output.AppendFormat(pers.FirstName & ":" & vbCrLf)
For Each pt In pers.PetList
output.AppendFormat(vbTab & pt.Name & vbCrLf)
Next
Next

Console.WriteLine(output)
' This code produces the following output:
'
' Magnus:
' Daisy
' Terry:
' Barley
' Boots
' Blue Moon
' Charlotte:
' Whiskers
' Arlene:

' "Flat" results.


Dim petOwners = From pers In people
Group Join pet In pets On pers Equals pet.Owner
Into PetList = Group
From pet In PetList.DefaultIfEmpty()
Select pers.FirstName, pers.LastName,
PetName =
If(pet Is Nothing, String.Empty, pet.Name)

' Display "flat" results.


output = New System.Text.StringBuilder()
For Each pers In petOwners
output.AppendFormat(
pers.FirstName & ":" & vbTab & pers.PetName & vbCrLf)
Next

Console.WriteLine(output.ToString())
' This code produces the following output:
'
' Magnus: Daisy
' Terry: Barley
' Terry: Boots
' Terry: Blue Moon
' Charlotte: Whiskers
' Arlene:
End Sub

Realizar una combinación mediante una clave compuesta


Puede usar la And palabra clave en una Join Group Join cláusula o para identificar varios campos clave que
se usarán al buscar valores coincidentes de las colecciones que se van a combinar. La And palabra clave
especifica que todos los campos de clave especificados deben coincidir con los elementos que se van a
combinar.
Para realizar una combinación mediante una clave compuesta
1. Agregue el código siguiente al Module1 módulo del proyecto para ver ejemplos de una combinación que
usa una clave compuesta.

Sub CompositeKeyJoinExample()
' Create two lists.
Dim people = GetPeople()
Dim pets = GetPets(people)

' Implicit Join.


Dim petOwners = From pers In people
Join pet In pets On
pet.Owner.FirstName Equals pers.FirstName And
pet.Owner.LastName Equals pers.LastName
Select pers.FirstName, PetName = pet.Name

' Display grouped results.


Dim output As New System.Text.StringBuilder
For Each pers In petOwners
output.AppendFormat(
pers.FirstName & ":" & vbTab & pers.PetName & vbCrLf)
Next

Console.WriteLine(output)
' This code produces the following output:
'
' Magnus: Daisy
' Terry: Barley
' Terry: Boots
' Terry: Blue Moon
' Charlotte: Whiskers
End Sub

ejecutar el código
Para agregar código para ejecutar los ejemplos
1. Reemplace Sub Main en el Module1 módulo del proyecto por el código siguiente para ejecutar los
ejemplos de este tema.

Sub Main()
InnerJoinExample()
LeftOuterJoinExample()
CompositeKeyJoinExample()

Console.ReadLine()
End Sub

2. Presione F5 para ejecutar los ejemplos.

Vea también
LINQ
Introducción a LINQ en Visual Basic
Cláusula Join
Cláusula Group Join
Cláusula From
Cláusula WHERE
Consultas
Transformaciones de datos con LINQ (C#)
Cómo: Ordenar los resultados de una consulta
mediante LINQ (Visual Basic)
20/05/2021 • 3 minutes to read

Language-Integrated Query (LINQ) facilita el acceso a la información de base de datos y la ejecución de


consultas.
En el ejemplo siguiente se muestra cómo crear una nueva aplicación que realiza consultas en una base de datos
de SQL Server y ordena los resultados por varios campos mediante la Order By cláusula. El criterio de
ordenación de cada campo puede ser en orden ascendente o descendente. Para obtener más información, vea
cláusula order by.
En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.

NOTE
Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de
usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se
utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para crear una conexión a una base de datos


1. En Visual Studio, Abra Explorador de ser vidores / Explorador de bases de datos haciendo clic en
Explorador de ser vidores / Explorador de bases de datos en el menú Ver .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y, a continuación, haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.
Para agregar un proyecto que contiene un archivo LINQ to SQL
1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . El Object Relational Designer (Object
Relational Designer) se abre para el archivo Northwind. dbml.
Para agregar tablas que se van a consultar en Object Relational Designer
1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Tablas .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo
Northwind. dbml que agregó anteriormente.
2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador. Haga clic en la tabla
Orders y arrástrela hasta el panel izquierdo del diseñador.
El diseñador crea Customer objetos y nuevos Order para el proyecto. Observe que el diseñador detecta
automáticamente las relaciones entre las tablas y crea las propiedades secundarias de los objetos
relacionados. Por ejemplo, IntelliSense mostrará que el Customer objeto tiene una Orders propiedad
para todos los pedidos relacionados con ese cliente.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.
Para agregar código para consultar la base de datos y mostrar los resultados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Haga doble clic en Form1 para agregar código al Load evento del formulario.
3. Al agregar tablas a Object Relational Designer, el diseñador agregó un DataContext objeto al proyecto.
Este objeto contiene el código que debe tener para obtener acceso a esas tablas y para obtener acceso a
objetos y colecciones individuales para cada tabla. El DataContext nombre del objeto para el proyecto se
basa en el nombre del archivo. dbml. Para este proyecto, el DataContext objeto se denomina
northwindDataContext .

Puede crear una instancia de en el DataContext código y consultar las tablas especificadas por Object
Relational Designer.
Agregue el código siguiente al Load evento para consultar las tablas que se exponen como propiedades
del contexto de datos y ordenar los resultados. La consulta ordena los resultados por el número de
pedidos de cliente, en orden descendente. Los clientes que tienen el mismo número de pedidos se
ordenan por nombre de empresa en orden ascendente (el valor predeterminado).

Dim db As New northwindDataContext

Dim q = From cust In db.Customers


Where cust.Orders.Count > 0
Select cust.CustomerID, cust.CompanyName,
OrderCount = cust.Orders.Count, cust.Country
Order By OrderCount Descending, CompanyName

DataGridView1.DataSource = q

4. Presione F5 para ejecutar el proyecto y ver los resultados.

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)
Cómo: Filtrar los resultados de consultas usando
LINQ (Visual Basic)
20/05/2021 • 3 minutes to read

Language-Integrated Query (LINQ) facilita el acceso a la información de base de datos y la ejecución de


consultas.
En el ejemplo siguiente se muestra cómo crear una nueva aplicación que realiza consultas en una base de datos
de SQL Server y filtra los resultados por un valor determinado mediante la Where cláusula. Para obtener más
información, vea cláusula WHERE.
En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.

NOTE
Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de
usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se
utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para crear una conexión a una base de datos


1. En Visual Studio, Abra Explorador de ser vidores / Explorador de bases de datos haciendo clic en
Explorador de ser vidores / Explorador de bases de datos en el menú Ver .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y, a continuación, haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.

Para agregar un proyecto que contiene un archivo LINQ to SQL


1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . Se abre el Object Relational Designer
(Object Relational Designer) para el archivo Northwind. dbml.

Para agregar tablas que se van a consultar en Object Relational


Designer
1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Tablas .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo
Northwind. dbml que agregó anteriormente.
2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador. Haga clic en la tabla
Orders y arrástrela hasta el panel izquierdo del diseñador.
El diseñador crea Customer objetos y nuevos Order para el proyecto. Observe que el diseñador detecta
automáticamente las relaciones entre las tablas y crea las propiedades secundarias de los objetos
relacionados. Por ejemplo, IntelliSense mostrará que el Customer objeto tiene una Orders propiedad
para todos los pedidos relacionados con ese cliente.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.

Para agregar código para consultar la base de datos y mostrar los


resultados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Haga doble clic en Form1 para agregar código al Load evento del formulario.
3. Al agregar tablas a Object Relational Designer, el diseñador agregó un DataContext objeto para el
proyecto. Este objeto contiene el código que debe tener para obtener acceso a esas tablas, además de
colecciones y objetos individuales para cada tabla. El DataContext nombre del objeto para el proyecto se
basa en el nombre del archivo. dbml. Para este proyecto, el DataContext objeto se denomina
northwindDataContext .

Puede crear una instancia de en el DataContext código y consultar las tablas especificadas por Object
Relational Designer.
Agregue el código siguiente al Load evento para consultar las tablas que se exponen como propiedades
de su contexto de datos. La consulta filtra los resultados y devuelve solo los clientes que se encuentran en
London .

Dim db As New northwindDataContext

Dim customers_London = From cust In db.Customers


Where cust.City = "London"
Select cust.CustomerID, cust.CompanyName,
OrderCount = cust.Orders.Count,
cust.City, cust.Country

DataGridView1.DataSource = customers_London

4. Presione F5 para ejecutar el proyecto y ver los resultados.


5. A continuación se muestran otros filtros que puede probar.
Dim companies_H = From cust In db.Customers
Where cust.Orders.Count > 0 And
cust.CompanyName.StartsWith("H")
Select cust.CustomerID, cust.CompanyName,
OrderCount = cust.Orders.Count,
cust.Country

Dim customers_USA = From cust In db.Customers


Where cust.Orders.Count > 15 And
cust.Country = "USA"
Select cust.CustomerID, cust.CompanyName,
OrderCount = cust.Orders.Count,
cust.Country

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)
Cómo: Hacer el recuento, la suma o el promedio de
datos usando LINQ (Visual Basic)
20/05/2021 • 4 minutes to read

Language-Integrated Query (LINQ) facilita el acceso a la información de base de datos y la ejecución de


consultas.
En el ejemplo siguiente se muestra cómo crear una nueva aplicación que realiza consultas en una base de datos
de SQL Server. El ejemplo cuenta, suma y calcula el promedio de los resultados mediante las Aggregate
Group By cláusulas y. Para obtener más información, vea cláusula Aggregate y cláusula Group by.

En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.

NOTE
Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de
usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se
utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para crear una conexión a una base de datos


1. En Visual Studio, Abra Explorador de ser vidores / Explorador de bases de datos haciendo clic en
Explorador de ser vidores / Explorador de bases de datos en el menú Ver .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y, a continuación, haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.
Para agregar un proyecto que contiene un archivo LINQ to SQL
1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . El Object Relational Designer (Object
Relational Designer) se abre para el archivo Northwind. dbml.
Para agregar tablas que se van a consultar en Object Relational Designer
1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Tablas .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo
Northwind. dbml que agregó anteriormente.
2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador. Haga clic en la tabla
Orders y arrástrela hasta el panel izquierdo del diseñador.
El diseñador crea Customer objetos y nuevos Order para el proyecto. Observe que el diseñador detecta
automáticamente las relaciones entre las tablas y crea las propiedades secundarias de los objetos
relacionados. Por ejemplo, IntelliSense mostrará que el Customer objeto tiene una Orders propiedad
para todos los pedidos relacionados con ese cliente.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.
Para agregar código para consultar la base de datos y mostrar los resultados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Haga doble clic en Form1 para agregar código al Load evento del formulario.
3. Al agregar tablas a Object Relational Designer, el diseñador agregó un DataContext objeto para el
proyecto. Este objeto contiene el código que debe tener para obtener acceso a esas tablas y para obtener
acceso a objetos y colecciones individuales para cada tabla. El DataContext nombre del objeto para el
proyecto se basa en el nombre del archivo. dbml. Para este proyecto, el DataContext objeto se denomina
northwindDataContext .

Puede crear una instancia de en el DataContext código y consultar las tablas especificadas por Object
Relational Designer.
Agregue el código siguiente al Load evento para consultar las tablas que se exponen como propiedades
de su DataContext cuenta y, sumar y calcular el promedio de los resultados. En el ejemplo se usa la
Aggregate cláusula para consultar un solo resultado y la Group By cláusula para mostrar un promedio
de los resultados agrupados.
Dim db As New northwindDataContext
Dim msg = ""

Dim londonCustomerCount = Aggregate cust In db.Customers


Where cust.City = "London"
Into Count()
msg &= "Count of London Customers: " & londonCustomerCount & vbCrLf

Dim averageOrderCount = Aggregate cust In db.Customers


Where cust.City = "London"
Into Average(cust.Orders.Count)
msg &= "Average number of Orders per customer: " &
averageOrderCount & vbCrLf

Dim venezuelaTotalOrders = Aggregate cust In db.Customers


Where cust.Country = "Venezuela"
Into Sum(cust.Orders.Count)
msg &= "Total number of orders from Customers in Venezuela: " &
venezuelaTotalOrders & vbCrLf

MsgBox(msg)

Dim averageCustomersByCity = From cust In db.Customers


Group By cust.City
Into Average(cust.Orders.Count)
Order By Average

DataGridView1.DataSource = averageCustomersByCity

'Another way to grab the count and sum

londonCustomerCount = (From cust in db.Customers


Where cust.City = "London").Count()

venezuelaTotalOrders = (From cust in db.Customers


Where cust.Country = "Venezuela"
Select cust.Orders).Sum()

4. Presione F5 para ejecutar el proyecto y ver los resultados.

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)
Aggregate Clause
Group by (cláusula)
Cómo: Buscar los valores máximo y mínimo en el
resultado de una consulta usando LINQ (Visual
Basic)
20/05/2021 • 3 minutes to read

Language-Integrated Query (LINQ) facilita el acceso a la información de base de datos y la ejecución de


consultas.
En el ejemplo siguiente se muestra cómo crear una nueva aplicación que realiza consultas en una base de datos
de SQL Server. En el ejemplo se determinan los valores mínimo y máximo de los resultados mediante el uso de
las Aggregate Group By cláusulas y. Para obtener más información, vea cláusula Aggregate y cláusula Group by.
En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.

NOTE
Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de
usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se
utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Crear una conexión a una base de datos


1. En Visual Studio, Abra Explorador de ser vidores / Explorador de bases de datos haciendo clic en
Explorador de ser vidores / Explorador de bases de datos en el menú Ver .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y, a continuación, haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.
Para agregar un proyecto que contiene un archivo LINQ to SQL
1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . El Object Relational Designer (Object
Relational Designer) se abre para el archivo Northwind. dbml.

Agregar tablas para realizar consultas en Object Relational Designer


1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Tablas .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo
Northwind. dbml que agregó anteriormente.
2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador. Haga clic en la tabla
Orders y arrástrela hasta el panel izquierdo del diseñador.
El diseñador crea Customer objetos y nuevos Order para el proyecto. Observe que el diseñador detecta
automáticamente las relaciones entre las tablas y crea las propiedades secundarias de los objetos
relacionados. Por ejemplo, IntelliSense mostrará que el Customer objeto tiene una Orders propiedad
para todos los pedidos relacionados con ese cliente.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.

Agregar código para consultar la base de datos y mostrar los


resultados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Haga doble clic en Form1 para agregar código al Load evento del formulario.
3. Al agregar tablas a Object Relational Designer, el diseñador agregó un DataContext objeto para el
proyecto. Este objeto contiene el código que debe tener para obtener acceso a esas tablas, además de
colecciones y objetos individuales para cada tabla. El DataContext nombre del objeto para el proyecto se
basa en el nombre del archivo. dbml. Para este proyecto, el DataContext objeto se denomina
northwindDataContext .

Puede crear una instancia de en el DataContext código y consultar las tablas especificadas por Object
Relational Designer.
Agregue el código siguiente al Load evento. En este código se consultan las tablas que se exponen como
propiedades del contexto de datos y se determinan los valores mínimo y máximo de los resultados. En el
ejemplo se usa la Aggregate cláusula para consultar un solo resultado y la Group By cláusula para
mostrar un promedio de los resultados agrupados.

Dim db As New northwindDataContext

Dim minimumOrders = Aggregate cust In db.Customers


Where cust.City = "London"
Into Min(cust.Orders.Count)

MsgBox("Minimum Orders from a London Customer: " & minimumOrders)

Dim maximumOrdersByCountry = From cust In db.Customers


Group By cust.Country
Into MaxOrders = Max(cust.Orders.Count)

DataGridView1.DataSource = maximumOrdersByCountry

4. Presione F5 para ejecutar el proyecto y ver los resultados.

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)
Cómo: Devolver el resultado de una consulta con
LINQ como tipo específico (Visual Basic)
20/05/2021 • 3 minutes to read

Language-Integrated Query (LINQ) facilita el acceso a la información de base de datos y la ejecución de


consultas. De forma predeterminada, las consultas LINQ devuelven una lista de objetos como un tipo anónimo.
También puede especificar que una consulta devuelva una lista de un tipo específico mediante la Select
cláusula.
En el ejemplo siguiente se muestra cómo crear una nueva aplicación que realiza consultas en una base de datos
de SQL Server y proyecta los resultados como un tipo con nombre específico. Para obtener más información,
vea tipos anónimos y cláusula SELECT.
En los ejemplos de este tema se utiliza la base de datos de ejemplo Northwind. Si no dispone de esta base de
datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener
instrucciones, consulte Descargar bases de datos de ejemplo.

NOTE
Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de
usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se
utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para crear una conexión a una base de datos


1. En Visual Studio, Abra Explorador de ser vidores / Explorador de bases de datos haciendo clic en
Explorador de ser vidores / Explorador de bases de datos en el menú Ver .
2. Haga clic con el botón secundario en conexiones de datos en Explorador de ser vidores /
Explorador de bases de datos y, a continuación, haga clic en Agregar conexión .
3. Especifique una conexión válida a la base de datos de ejemplo Northwind.
Para agregar un proyecto que contiene un archivo LINQ to SQL
1. En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto . Seleccione Visual Basic
aplicación de Windows Forms como el tipo de proyecto.
2. En el menú Proyecto , haga clic en Agregar nuevo elemento . Seleccione la plantilla de elementos
LINQ to SQL clases .
3. Ponga al archivo el nombre northwind.dbml . Haga clic en Agregar . El Object Relational Designer (Object
Relational Designer) se abre para el archivo Northwind. dbml.
Para agregar tablas que se van a consultar en Object Relational Designer
1. En Explorador de ser vidores / Explorador de bases de datos , expanda la conexión a la base de
datos Northwind. Expanda la carpeta Tablas .
Si ha cerrado el Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo
Northwind. dbml que agregó anteriormente.
2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador.
El diseñador crea un nuevo Customer objeto para el proyecto. Puede proyectar el resultado de una
consulta como el Customer tipo o como un tipo que cree. En este ejemplo se creará un nuevo tipo en un
procedimiento posterior y se proyectará un resultado de consulta como ese tipo.
3. Guarde los cambios y cierre el diseñador.
4. Guarde el proyecto.
Para agregar código para consultar la base de datos y mostrar los resultados
1. En el cuadro de herramientas , arrastre un DataGridView control al formulario de Windows Forms
predeterminado para el proyecto, Form1.
2. Haga doble clic en Form1 para modificar la clase Form1.
3. Después de la End Class instrucción de la clase Form1, agregue el código siguiente para crear un
CustomerInfo tipo que contenga los resultados de la consulta para este ejemplo.

Public Class CustomerInfo


Public Property CompanyName As String
Public Property ContactName As String
End Class

4. Al agregar tablas a Object Relational Designer, el diseñador agregó un DataContext objeto al proyecto.
Este objeto contiene el código que debe tener para obtener acceso a esas tablas y para obtener acceso a
objetos y colecciones individuales para cada tabla. El DataContext nombre del objeto para el proyecto se
basa en el nombre del archivo. dbml. Para este proyecto, el DataContext objeto se denomina
northwindDataContext .

Puede crear una instancia de en el DataContext código y consultar las tablas especificadas por Object
Relational Designer.
En el Load caso de la clase Form1, agregue el siguiente código para consultar las tablas que se exponen
como propiedades de su contexto de datos. La Select cláusula de la consulta creará un nuevo
CustomerInfo tipo en lugar de un tipo anónimo para cada elemento del resultado de la consulta.

Dim db As New northwindDataContext

Dim customerList =
From cust In db.Customers
Where cust.CompanyName.StartsWith("L")
Select New CustomerInfo With {.CompanyName = cust.CompanyName,
.ContactName = cust.ContactName}

DataGridView1.DataSource = customerList

5. Presione F5 para ejecutar el proyecto y ver los resultados.

Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)

También podría gustarte