From (Cláusula, Visual Basic)
Especifica una o varias variables de rango y una colección que se va a consultar.
Sintaxis
From element [ As type ] In collection [ _ ]
[, element2 [ As type2 ] In collection2 [, ... ] ]
Partes
Término | Definición |
---|---|
element |
Obligatorio. Una variable de rango que se usa para recorrer en iteración los elementos de la colección. Se usa una variable de rango para hacer referencia a cada miembro de collection a medida que la consulta recorre collection en iteración. Debe ser un tipo enumerable. |
type |
Opcional. Tipo de element . Si no se especifica type , el tipo de element se deduce de collection . |
collection |
Necesario. Hace referencia a la colección que se va a consultar. Debe ser un tipo enumerable. |
Comentarios
La cláusula From
se usa para identificar los datos de origen de una consulta y las variables que se utilizan para hacer referencia a un elemento a partir de la colección de origen. Estas variables se denominan variables de rango. La cláusula From
es necesaria para una consulta, excepto cuando la cláusula Aggregate
se usa para identificar una consulta que solo devuelve resultados agregados. Para más información, consulte Cláusula Aggregate.
Puede especificar varias cláusulas From
en una consulta para identificar varias colecciones que se van a combinar. Cuando se especifican varias colecciones, se iteran de manera independiente o se pueden combinar si están relacionadas. Puede combinar colecciones de manera implícita mediante la cláusula Select
o explícitamente si se usan las cláusulas Join
o Group Join
. Como alternativa, puede especificar varias variables de rango y colecciones en una cláusula From
única, con cada variable de rango y colección relacionada separada de las demás por una coma. En el ejemplo de código siguiente, se muestran ambas opciones de sintaxis para la cláusula From
.
' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2
' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
From var2 In collection2
La cláusula From
define el ámbito de una consulta, que es similar al ámbito de un bucle For
. Por lo tanto, cada variable de rango element
en el ámbito de una consulta debe tener un nombre único. Como puede especificar varias cláusulas From
para una consulta, las cláusulas From
posteriores pueden hacer referencia a las variables de rango en la cláusula From
o a las variables de rango en una cláusula From
anterior. Por ejemplo, en el ejemplo siguiente se muestra una cláusula From
anidada, en la que la colección en la segunda cláusula se basa en una propiedad de la variable de rango en la primera cláusula.
Dim allOrders = From cust In GetCustomerList()
From ord In cust.Orders
Select ord
Cada cláusula From
puede ir seguida de cualquier combinación de cláusulas de consulta adicionales para restringir la consulta. Puede restringir la consulta de estas maneras:
Combine implícitamente varias colecciones con las cláusulas
From
ySelect
, o de manera explícita con las cláusulasJoin
oGroup Join
.Use la cláusula
Where
para filtrar el resultado de la consulta.Ordene el resultado mediante la cláusula
Order By
.Use la cláusula
Group By
para agrupar resultados similares.Use la cláusula
Aggregate
para identificar funciones de agregado que se van a evaluar para todo el resultado de la consulta.Use la cláusula
Let
para introducir una variable de iteración cuyo valor está determinado por una expresión en lugar de una colección.Use la cláusula
Distinct
para omitir los resultados de consulta duplicados.Identifique las partes del resultado que se van a devolver con las cláusulas
Skip
,Take
,Skip While
yTake While
.
Ejemplo
En la expresión de consulta siguiente, se usa una cláusula From
para declarar una variable de rango cust
para cada objeto Customer
en la colección customers
. La cláusula Where
usa la variable de rango para restringir la salida a los clientes de la región especificada. El bucle For Each
muestra el nombre de la empresa para cada cliente en el resultado de la consulta.
Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
ByVal region As String)
Dim customersForRegion = From cust In customers
Where cust.Region = region
For Each cust In customersForRegion
Console.WriteLine(cust.CompanyName)
Next
End Sub
Consulte también
- Consultas
- Introducción a LINQ en Visual Basic
- Instrucción For Each...Next
- Instrucción For...Next
- Select (cláusula)
- Where (cláusula)
- Aggregate Clause
- Cláusula Distinct
- Join (cláusula)
- Cláusula Group Join
- Order By (cláusula)
- Let (cláusula)
- Cláusula Skip
- Cláusula Take
- Cláusula Skip While
- Cláusula Take While