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 y Select, o de manera explícita con las cláusulas Join o Group 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 y Take 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