Compartilhar via


Operações de consulta básica (Visual Basic)

Este tópico fornece uma breve introdução a LINQ (consulta integrada à linguagem) expressões no Visual Basic e alguns dos tipos típicos de operações executadas em uma consulta. Para obter mais informações, consulte os seguintes tópicos:

Introdução ao LINQ no Visual Basic

Consultas(Visual Basic)

Especificando a fonte de dados (from)

In a LINQ consulta, a primeira etapa é especificar a fonte de dados que você deseja consultar. Portanto, a From cláusula em uma consulta sempre vem em primeiro lugar. Operadores de consulta Selecionar e formatar o resultado com base no tipo de fonte de.

Dim query = From cust In customers _
'           ...

The From cláusula Especifica a fonte de dados, customerse um variável de intervalo, cust. A variável de intervalo é como uma variável de iteração do loop, exceto em uma expressão de consulta, não ocorre nenhuma interação real.Quando a consulta é executada, muitas vezes, usando um For Each a variável de intervalo de loop, serve sistema autônomo uma referência a cada elemento sucessivo customers. Porque o compilador pode inferir o tipo de cust, não é necessário especificá-lo explicitamente. Para obter exemplos de consultas escritas com e sem digitação explícita, consulte Tipo relacionamentos em operações de consulta (Visual Basic).

Para obter mais informações sobre como usar o From cláusula no Visual Basic, consulte A partir da cláusula (Visual Basic).

Filtragem de dados (onde)

Provavelmente a operação de consulta mais comuns é aplicando um filtro na forma de uma expressão booliana.A consulta, em seguida, retorna somente esses elementos para o qual a expressão for verdadeira.A Where cláusula é usada para executar a filtragem. O filtro especifica quais elementos na fonte de dados para incluir a sequência resultante.No exemplo seguinte, somente os clientes que possuem um endereço em Londres são incluídos.

Dim londonCusts = From cust In customers _
                  Where cust.City = "London" _
'                 ...

Você pode usar operadores lógicos, sistema autônomo And e Or para agrupar expressões de filtro em um Where cláusula. Por exemplo, para retornar somente os clientes que são de Londres e cujo nome é Devon, use o seguinte código:

Where cust.City = "London" And cust.Name = "Devon" _

Para retornar aos clientes de Londres ou Paris, use o seguinte código:

Where cust.City = "London" Or cust.City = "Paris" _

Para obter mais informações sobre como usar o Where cláusula no Visual Basic, consulte Clúasula Where (Visual Basic).

Ordenação de dados (Order By)

Muitas vezes é conveniente classificar os dados retornados em uma determinada ordem.The Order By cláusula fará com que os elementos na sequência retornada a ser classificado em um campo especificado ou campos. Por exemplo, a consulta a seguir classifica os resultados com base na Name propriedade. Porque Name é uma seqüência de caracteres, os dados retornados serão classificados em ordem alfabética, de à Z.

 Dim londonCusts1 = From cust In customers _
                    Where cust.City = "London" _
                    Order By cust.Name Ascending _
'                   ...

Para solicitar os resultados em ordem inversa de Z a, use o Order By...Descending cláusula. O padrão é Ascending Quando nenhum deles Ascending nem Descending foi especificado.

Para obter mais informações sobre como usar o Order By cláusula no Visual Basic, consulte Ordem por cláusula (Visual Basic).

Selecionando dados (selecionar)

The Select cláusula Especifica o formulário e o conteúdo de elementos retornados. Por exemplo, você pode especificar se os resultados consistirá completa Customer objetos, apenas um Customer propriedade, um subconjunto das propriedades de uma combinação das propriedades de várias fontes de dados ou algum novo tipo de resultado com base em um cálculo. Quando o Select cláusula produz um valor diferente de uma cópia do elemento de fonte, a operação é chamada um projeção.

Para recuperar uma coleção que consiste em completa Customer objetos, selecionar a variável de intervalo:

Dim londonCusts2 = From cust In customers _
                   Where cust.City = "London" _
                   Order By cust.Name Ascending _
                   Select cust

If a Customer instância é um objeto grande ou h sistema autônomo muitos campos e tudo o que você deseja recuperar é o nome, você pode selecionar cust.Name, sistema autônomo mostrado no exemplo a seguir. inferência de tipos de tipos local reconhece que isso altera o tipo de resultado de uma coleção de Customer objetos a uma coleção de seqüências de caracteres.

Dim londonCusts3 = From cust In customers _
                   Where cust.City = "London" _
                   Order By cust.Name Ascending _
                   Select cust.Name

Para selecionar vários campos na fonte de dados, você tem duas opções:

  • No Select cláusula, especifique os campos que deseja incluir no resultado. O compilador irá definir um tipo anônimo com esses campos sistema autônomo suas propriedades.Para obter mais informações, consulte Tipos anônimos.

    Como os elementos retornados no exemplo a seguir são instâncias de um tipo anônimo, você não pode consultar ao tipo pelo nome em outro lugar em seu código.O nome designado de compilador para o tipo contém caracteres que inválido são válido no código do Visual Basic normal.No exemplo a seguir, os elementos na coleção retornado pela consulta em londonCusts4 são instâncias de um tipo anônimo

    Dim londonCusts4 = From cust In customers _
                       Where cust.City = "London" _
                       Order By cust.Name Ascending _
                       Select Name = cust.Name, Phone = cust.Phone
    
    For Each londonCust In londonCusts4
        Console.WriteLine(londonCust.Name & " " & londonCust.Phone)
    Next
    
    

    - ou -

  • Definir um tipo nomeado que contém os campos específicos que você deseja incluir no resultado e criar e inicializar instâncias do tipo no Select cláusula. Use esta opção somente se você tiver usar resultados individuais fora da coleção em que são retornados ou se tiver passá-los sistema autônomo parâmetros sistema autônomo chamadas de método.O tipo de londonCusts5 no exemplo a seguir é IEnumerable(Of NamePhone).

    Public Class NamePhone
        Public Name As String
        Public Phone As String
        ' Additional class elements
    End Class
    
    Dim londonCusts5 = From cust In customers _
                       Where cust.City = "London" _
                       Order By cust.Name Ascending _
                       Select New NamePhone With {.Name = cust.Name, _
                                                  .Phone = cust.Phone}
    

Para obter mais informações sobre como usar o Select cláusula no Visual Basic, consulte Cláusula Select (Visual Basic).

Ingressando em dados (unir e unir de agrupar)

Você pode agrupar mais de uma fonte de dados no From cláusula de várias maneiras. Por exemplo, o código a seguir usa duas fontes de dados e implicitamente combina propriedades a partir de ambos no resultado.A consulta seleciona os alunos cujos nomes últimos começam com uma vogal.

Dim vowels() As String = {"A", "E", "I", "O", "U"}
Dim vowelNames = From student In students, vowel In vowels _
                 Where student.Last.IndexOf(vowel) = 0 _
                 Select Name = student.First & " " & _
                 student.Last, Initial = vowel _
                 Order By Initial

For Each vName In vowelNames
    Console.WriteLine(vName.Initial & ":  " & vName.Name)
Next
Observação:

Você pode executar esse código com a lista de alunos criado no Como: Criar uma lista de itens.

The Join palavra-chave é equivalente a um INNER JOIN no SQL. Ele combina duas coleções com base em valores chave correspondentes entre elementos em duas coleções.A consulta retorna todo ou parte dos elementos da coleção que possuem valores de chave correspondentes.Por exemplo, o código a seguir duplica a ação da unir implícita anterior.

Dim vowelNames2 = From student In students _
                  Join vowel In vowels _
                  On student.Last(0) Equals vowel _
                  Select Name = student.First & " " & _
                  student.Last, Initial = vowel _
                  Order By Initial

Group Join combina coleções em uma única coleção hierárquica, exatamente como um LEFT JOIN no SQL. Para obter mais informações, consulte Cláusula de adição (Visual Basic) e Cláusula Join Group (Visual Basic).

Dados de agrupamento (agrupar By)

Você pode adicionar um Group By cláusula para agrupar os elementos em um resultado de consulta de acordo com um ou mais campos dos elementos. Por exemplo, o código a seguir agrupa os alunos por ano de classe.

Dim studentsByYear = From student In students _
                     Select student _
                     Group By year = student.Year _
                     Into Classes = Group

For Each yearGroup In studentsByYear
    Console.WriteLine(vbCrLf & "Year: " & yearGroup.year)
    For Each student In yearGroup.Classes
        Console.WriteLine("   " & student.Last & ", " & student.First)
    Next
Next

Se você executar esse código usando a lista dos alunos criado em Como: Criar uma lista de itens, a saída das For Each demonstrativo é:

Ano: Júnior

    Tucker, Michael

    Garcia, Hugo

    Garcia, Suzana

    Tucker, lance

    

Ano: Sênior

    Omelchenko, Svetlana

    Osada, Michiko

    Fakhouri, Fadi

    Feng, Hanying

    Adams, Terry

    

Ano: Freshman

    Mortensen, Sven

    Garcia, Cesar

A variação mostrada no código a seguir ordena os anos de classe e pedidos, em seguida, os alunos dentro de cada ano pelo sobrenome.

Dim studentsByYear2 = From student In students _
                      Select student _
                      Order By student.Year, student.Last _
                      Group By year = student.Year _
                      Into Classes = Group

Para obter mais informações sobre o Group By, consulte Agrupar por cláusula (Visual Basic).

Consulte também

Tarefas

Consultas de exemplo (Visual Basic)

Conceitos

Visão geral de operadores de consulta padrão

Referência

IEnumerable<T>

Outros recursos

Introdução ao LINQ no Visual Basic

Consultas(Visual Basic)

LINQ no Visual Basic