Compartir a través de


From (Cláusula) (Visual Basic)

Especifica una o varias variables de intervalo 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. Variable de rango usada para recorrer en iteración los elementos de la colección. Se usa una variable de intervalo para hacer referencia a cada miembro de collection como la consulta recorre en iteración .collection Debe ser un tipo enumerable.
type Opcional. Tipo de element. Si no se especifica , type el tipo de element se deduce de collection.
collection Obligatorio. Hace referencia a la colección que se va a consultar. Debe ser un tipo enumerable.

Observaciones

La From cláusula se usa 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 From cláusula es necesaria para una consulta, excepto cuando la Aggregate cláusula se usa para identificar una consulta que devuelve solo los resultados agregados. Para obtener más información, vea Cláusula aggregate.

Puede especificar varias From cláusulas en una consulta para identificar varias colecciones que se van a unir. Cuando se especifican varias colecciones, se iteran de forma independiente o se pueden combinar si están relacionadas. Puede combinar colecciones implícitamente mediante la Select cláusula o explícitamente mediante las Join cláusulas o Group Join . Como alternativa, puede especificar varias variables de rango y colecciones en una sola From cláusula, con cada variable de intervalo relacionada y colección separadas de las demás por una coma. En el ejemplo de código siguiente se muestran ambas opciones de sintaxis para la From cláusula .

' 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 From cláusula define el ámbito de una consulta, que es similar al ámbito de un For bucle. Por lo tanto, cada element variable de intervalo en el ámbito de una consulta debe tener un nombre único. Dado que puede especificar varias From cláusulas para una consulta, las cláusulas posteriores From pueden hacer referencia a variables de rango en la From cláusula o pueden hacer referencia a variables de rango en una cláusula anterior From . Por ejemplo, en el ejemplo siguiente se muestra una cláusula anidada From donde la colección de 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 From cláusula puede ir seguida de cualquier combinación de cláusulas de consulta adicionales para refinar la consulta. Puede refinar la consulta de las maneras siguientes:

  • Combine varias colecciones implícitamente mediante las From cláusulas y Select , o explícitamente mediante las Join cláusulas o Group Join .

  • Use la Where cláusula para filtrar el resultado de la consulta.

  • Ordene el resultado mediante la Order By cláusula .

  • Agrupar resultados similares mediante la Group By cláusula .

  • Use la Aggregate cláusula para identificar las funciones de agregado que se van a evaluar para todo el resultado de la consulta.

  • Use la Let cláusula para introducir una variable de iteración cuyo valor viene determinado por una expresión en lugar de una colección.

  • Use la cláusula para omitir los Distinct resultados de la consulta duplicada.

  • Identifique partes del resultado que se van a devolver mediante las Skipcláusulas , Take, Skip Whiley Take While .

Ejemplo

La siguiente expresión de consulta usa una From cláusula para declarar una variable cust de intervalo para cada Customer objeto de la customers colección. La Where cláusula usa la variable de intervalo para restringir la salida a los clientes de la región especificada. El For Each bucle muestra el nombre de la compañía 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