Partilhar via


Como: Localizar o valor mínimo ou máximo em um resultado de consulta usando LINQ (Visual Basic)

O Language-Integrated Query (LINQ) facilita o acesso às informações do banco de dados e a execução de consultas.

O exemplo a seguir mostra como criar um novo aplicativo que executa consultas em um banco de dados do SQL Server. A amostra determina os valores mínimos e máximos para os resultados usando as cláusulas Aggregate e Group By. Para obter mais informações, consulte Cláusula agregada e Agrupar por cláusula.

Os exemplos neste artigo usam o banco de dados de exemplo Northwind. Para obter o banco de dados, consulte Descarregar Bases de Dados de Exemplo.

Observação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você tem e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.

Criar uma conexão com um banco de dados

  1. No Visual Studio, abra Gerenciador de Servidores/Explorador de Banco de Dados clicando em Gerenciador de Servidores/Explorador de Banco de Dados no menu Exibir .

  2. Clique com o botão direito do rato em Ligações de Dados no Explorador de Servidores/e depois no Explorador de Base de Dados e, em seguida, clique em Adicionar Ligação.

  3. Especifique uma conexão válida com o banco de dados de exemplo Northwind.

Para adicionar um projeto que contém um arquivo LINQ to SQL

  1. No Visual Studio, no menu Arquivo, aponte para Novo e clique em Projeto. Selecione Visual Basic Windows Forms Application como o tipo de projeto.

  2. No menu Projeto, clique em Adicionar Novo Item. Selecione o modelo de item LINQ to SQL Classes.

  3. Nomeie o arquivo northwind.dbml. Clique Adicionar. O Object Relational Designer (O/R Designer) é aberto para o arquivo northwind.dbml.

Adicionar tabelas à consulta ao O/R Designer

  1. No Server Explorer/Database Explorer, expanda a conexão com o banco de dados Northwind. Expanda a pasta Tabelas.

    Se você tiver fechado o O/R Designer, poderá reabri-lo clicando duas vezes no arquivo northwind.dbml adicionado anteriormente.

  2. Clique na tabela Clientes e arraste-a para o painel esquerdo do designer. Clique na tabela Pedidos e arraste-a para o painel esquerdo do designer.

    O designer cria novos Customer e Order objetos para o seu projeto. Observe que o designer deteta automaticamente relações entre as tabelas e cria propriedades filhas para objetos relacionados. Por exemplo, o IntelliSense mostrará que o objeto Customer tem uma propriedade Orders para todos os pedidos relacionados a esse cliente.

  3. Salve as alterações e feche o designer.

  4. Salve seu projeto.

Adicionar código para consultar o banco de dados e exibir os resultados

  1. No Caixa de Ferramentas do, arraste um controle DataGridView para o Windows Form padrão para seu projeto, o Form1.

  2. Clique duas vezes em Form1 para adicionar código ao evento Load do formulário.

  3. Quando você adicionou tabelas ao O/R Designer, o designer adicionou um objeto DataContext para seu projeto. Este objeto contém o código que você deve ter para acessar essas tabelas, além de objetos individuais e coleções para cada tabela. O objeto DataContext para seu projeto é nomeado com base no nome do seu arquivo .dbml. Para este projeto, o objeto DataContext é chamado northwindDataContext.

    Você pode criar uma instância do DataContext em seu código e consultar as tabelas especificadas pelo O/R Designer.

    Adicione o seguinte código ao evento Load. Este código consulta as tabelas que são expostas como propriedades do seu contexto de dados e determina os valores mínimo e máximo para os resultados. O exemplo usa a cláusula Aggregate para consultar um único resultado e a cláusula Group By para mostrar uma média para resultados agrupados.

    Dim db As New northwindDataContext
    
    Dim minimumOrders = Aggregate cust In db.Customers
                        Where cust.City = "London"
                        Into Min(cust.Orders.Count)
    
    MsgBox("Minimum Orders from a London Customer: " & minimumOrders)
    
    Dim maximumOrdersByCountry = From cust In db.Customers
                                 Group By cust.Country
                                   Into MaxOrders = Max(cust.Orders.Count)
    
    DataGridView1.DataSource = maximumOrdersByCountry
    
  4. Pressione F5 para executar seu projeto e visualizar os resultados.

Ver também