From (Cláusula, Visual Basic)From Clause (Visual Basic)

Especifica una o varias variables de rango y una colección que se va a consultar.Specifies one or more range variables and a collection to query.

SintaxisSyntax

From element [ As type ] In collection [ _ ]  
  [, element2 [ As type2 ] In collection2 [, ... ] ]  

ElementosParts

TérminoTerm DefiniciónDefinition
element Obligatorio.Required. Una variable de rango que se usa para recorrer en iteración los elementos de la colección.A range variable used to iterate through the elements of the collection. Una variable de rango se usa para hacer referencia a cada miembro del collection a medida que la consulta recorre en iteración el collection.A range variable is used to refer to each member of the collection as the query iterates through the collection. Debe ser un tipo Enumerable.Must be an enumerable type.
type Opcional.Optional. Tipo de element.The type of element. Si no se especifica ningún type, el tipo de element se deduce de collection.If no type is specified, the type of element is inferred from collection.
collection Obligatorio.Required. Hace referencia a la colección que se va a consultar.Refers to the collection to be queried. Debe ser un tipo Enumerable.Must be an enumerable type.

ComentariosRemarks

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.The From clause is used to identify the source data for a query and the variables that are used to refer to an element from the source collection. Estas variables se denominan variables de rango.These variables are called range variables. La cláusula From es necesaria para una consulta, excepto cuando se usa la cláusula Aggregate para identificar una consulta que devuelve solo resultados agregados.The From clause is required for a query, except when the Aggregate clause is used to identify a query that returns only aggregated results. Para obtener más información, vea cláusula Aggregate.For more information, see Aggregate Clause.

Puede especificar varias cláusulas From en una consulta para identificar varias colecciones que se van a combinar.You can specify multiple From clauses in a query to identify multiple collections to be joined. Cuando se especifican varias colecciones, se recorren en iteración de forma independiente o puede combinarlas si están relacionadas.When multiple collections are specified, they are iterated over independently, or you can join them if they are related. Puede combinar colecciones implícitamente mediante la cláusula Select, o explícitamente mediante las cláusulas Join o Group Join.You can join collections implicitly by using the Select clause, or explicitly by using the Join or Group Join clauses. Como alternativa, puede especificar varias colecciones y variables de rango en una sola cláusula de From, con cada variable de rango relacionada y colección separadas de las otras por una coma.As an alternative, you can specify multiple range variables and collections in a single From clause, with each related range variable and collection separated from the others by a comma. En el ejemplo de código siguiente se muestran ambas opciones de sintaxis para la cláusula From.The following code example shows both syntax options for the From clause.

' 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 de For.The From clause defines the scope of a query, which is similar to the scope of a For loop. Por lo tanto, cada variable de rango de element en el ámbito de una consulta debe tener un nombre único.Therefore, each element range variable in the scope of a query must have a unique name. Dado que puede especificar varias cláusulas de From para una consulta, las cláusulas de From subsiguientes pueden hacer referencia a las variables de rango de la cláusula From, o bien pueden hacer referencia a las variables de rango de una cláusula From anterior.Because you can specify multiple From clauses for a query, subsequent From clauses can refer to range variables in the From clause, or they can refer to range variables in a previous From clause. Por ejemplo, en el ejemplo siguiente se muestra una cláusula From anidada en la que la colección de la segunda cláusula se basa en una propiedad de la variable de rango de la primera cláusula.For example, the following example shows a nested From clause where the collection in the second clause is based on a property of the range variable in the first clause.

Dim allOrders = From cust In GetCustomerList()
                From ord In cust.Orders
                Select ord

Cada cláusula de From puede ir seguida de cualquier combinación de cláusulas de consulta adicionales para refinar la consulta.Each From clause can be followed by any combination of additional query clauses to refine the query. Puede refinar la consulta de las siguientes maneras:You can refine the query in the following ways:

  • Combine varias colecciones implícitamente mediante el uso de las cláusulas From y Select, o explícitamente mediante el uso de las cláusulas Join o Group Join.Combine multiple collections implicitly by using the From and Select clauses, or explicitly by using the Join or Group Join clauses.

  • Utilice la cláusula Where para filtrar el resultado de la consulta.Use the Where clause to filter the query result.

  • Ordene el resultado mediante la cláusula Order By.Sort the result by using the Order By clause.

  • Agrupe resultados similares juntos mediante la cláusula Group By.Group similar results together by using the Group By clause.

  • Utilice la cláusula Aggregate para identificar las funciones de agregado que se van a evaluar para todo el resultado de la consulta.Use the Aggregate clause to identify aggregate functions to evaluate for the whole query result.

  • Utilice la cláusula Let para introducir una variable de iteración cuyo valor se determina mediante una expresión en lugar de una colección.Use the Let clause to introduce an iteration variable whose value is determined by an expression instead of a collection.

  • Utilice la cláusula Distinct para omitir los resultados de la consulta duplicada.Use the Distinct clause to ignore duplicate query results.

  • Identifique las partes del resultado que se van a devolver mediante las cláusulas Skip, Take, Skip Whiley Take While.Identify parts of the result to return by using the Skip, Take, Skip While, and Take While clauses.

EjemploExample

La siguiente expresión de consulta utiliza una cláusula From para declarar una variable de rango cust para cada Customer objeto de la colección de customers.The following query expression uses a From clause to declare a range variable cust for each Customer object in the customers collection. La cláusula Where usa la variable de rango para restringir la salida a los clientes de la región especificada.The Where clause uses the range variable to restrict the output to customers from the specified region. El bucle For Each muestra el nombre de la compañía para cada cliente en el resultado de la consulta.The For Each loop displays the company name for each customer in the query result.

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énSee also