Linq
Linq
Linq
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
' Output:
' Canada count=2
' Contoso, Ltd Halifax
' Fabrikam, Inc. Vancouver
' United States count=1
' Margie's Travel Redmond
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.
' 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 .
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.
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()
' 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).
' 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.
' 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:
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:
Order By (cláusula)
Opcional. Una Order By cláusula especifica el criterio de ordenación de las columnas de una consulta. Por
ejemplo:
Join (cláusula)
Opcional. Una Join cláusula combina dos colecciones en una sola colección. Por ejemplo:
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.
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:
Let (cláusula)
Opcional. Una Let cláusula calcula un valor y lo asigna a una nueva variable de la consulta. Por ejemplo:
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:
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:
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:
Return customerList.ToList()
End Function
Para obtener más información sobre las funcionalidades de LINQ adicionales, vea Standard Query Operators
Overview.
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.
Module Sample1
Sub SampleTransform()
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
Recursos relacionados
T EM A DESC RIP C IÓ N
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
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.
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.
DataGridView1.DataSource = londonCusts
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.
DataGridView1.DataSource =
db.Ten_Most_Expensive_Products.ToList()
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
RefreshData()
End Sub
DataGridView1.DataSource = customers
End Sub
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:
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:
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.
' Add a person with no pets for the sake of Join examples.
_people.Add(New Person With {.FirstName = "Arlene", .LastName = "Huff"})
' 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
Sub InnerJoinExample()
' Create two lists.
Dim people = GetPeople()
Dim pets = GetPets(people)
Console.WriteLine(output)
Console.WriteLine(output)
Console.WriteLine(output)
' This code produces the following output:
'
' Magnus:
' Daisy
' Terry:
' Barley
' Boots
' Blue Moon
' Charlotte:
' Whiskers
' Arlene:
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' Magnus: Daisy
' Terry: Barley
' Terry: Boots
' Terry: Blue Moon
' Charlotte: Whiskers
' Arlene:
End Sub
Sub CompositeKeyJoinExample()
' Create two lists.
Dim people = GetPeople()
Dim pets = GetPets(people)
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
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
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.
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).
DataGridView1.DataSource = q
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
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.
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 .
DataGridView1.DataSource = customers_London
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
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.
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 = ""
MsgBox(msg)
DataGridView1.DataSource = averageCustomersByCity
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
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.
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.
DataGridView1.DataSource = maximumOrdersByCountry
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
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.
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 customerList =
From cust In db.Customers
Where cust.CompanyName.StartsWith("L")
Select New CustomerInfo With {.CompanyName = cust.CompanyName,
.ContactName = cust.ContactName}
DataGridView1.DataSource = customerList
Vea también
LINQ
Consultas
LINQ to SQL
DataContext (Métodos) (Object Relational Designer)