From (Cláusula, Visual Basic)
Actualización: noviembre 2007
Especifica una o más variables de rango y una colección que se va a consultar.
From element [ As type ] In collection [ _ ]
[, element2 [ As type2 ] In collection2 [, ... ] ]
Partes
element
Necesario. Variable de rango usada para recorrer en iteración los elementos de la colección. Una variable de rango se utiliza para hacer referencia a cada miembro de collection a medida que la consulta recorre en iteración collection. Debe ser un tipo enumerable.type
Opcional. Tipo de element. Si no se especifica ningún type, el tipo de element se infiere 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 utiliza para identificar los datos de origen de una consulta y las variables que se usan para hacer referencia a un elemento de la colección de origen. Estas variables se denominan variables de rango. La cláusula From se requiere para una consulta, excepto cuando la cláusula Aggregate se usa para identificar una consulta que devuelve sólo resultados agregados. Para obtener más información, consulte Aggregate (Cláusula, Visual Basic).
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 en ellas independientemente o puede combinarlas si están relacionadas. Puede combinar colecciones implícitamente mediante la cláusula Select o explícitamente mediante las cláusulas Join o Group Join Como alternativa, puede especificar varias variables de rango y colecciones en una sola cláusula From, con cada variable de rango y colección relacionadas separadas del resto por una coma. El ejemplo de código siguiente muestra 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 consiguiente, cada variable de rango element del ámbito de una consulta debe tener un nombre único. Dado que puede especificar varias cláusulas From para una consulta, las cláusulas From subsiguientes pueden hacer referencia a las variables de rango de la cláusula From o pueden hacer referencia a las variables de rango de una cláusula From previa. Por ejemplo, el ejemplo siguiente muestra una cláusula From anidada en la que la colección de la segunda cláusula se basa en una propiedad de variable de rango de 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 refinar la consulta. Puede refinarla de las siguientes maneras:
Combine varias colecciones implícitamente mediante las cláusulas From y Select o explícitamente mediante las cláusulas Join o Group Join.
Utilice la cláusula Where para filtrar el resultado de la consulta.
Ordene el resultado con la cláusula Order By.
Agrupe los resultados similares usando la cláusula Group By.
Utilice la cláusula Aggregate para identificar las funciones de agregado que se van a evaluar para todo el resultado de la consulta.
Utilice la cláusula Let para presentar una variable de iteración cuyo valor lo determina una expresión en lugar de una colección.
Use la cláusula Distinct para omitir resultados duplicados.
Identifique las partes del resultado que se van a devolver mediante las cláusulas Skip, Take, Skip While y Take While.
Ejemplo
La siguiente expresión de consulta usa una cláusula From para declarar una variable de rango cust para cada objeto Customer de la colección customers. La cláusula Where usa la variable de rango para restringir el resultado a los clientes de la región especificada. El bucle For Each muestra el nombre de la compañía de 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
Vea también
Conceptos
Introducción a LINQ en Visual Basic
Referencia
Instrucción For Each...Next (Visual Basic)
Instrucción For...Next (Visual Basic)
Select (Cláusula, Visual Basic)
Where (Cláusula, Visual Basic)
Aggregate (Cláusula, Visual Basic)
Distinct (Cláusula, Visual Basic)
Group Join (Cláusula, Visual Basic)
Order By (Cláusula, Visual Basic)
Skip While (Cláusula, Visual Basic)
Take While (Cláusula, Visual Basic)