Como localizar o valor mínimo ou máximo em um resultado de consulta usando LINQ (Visual Basic)
LINQ (Consulta Integrada à Linguagem) facilita o acesso às informações do banco de dados e a execução de consultas.
O exemplo a seguir mostra como criar um aplicativo que executa consultas em um banco de dados do SQL Server. O exemplo 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 Aggregate e Cláusula Group By.
Os exemplos neste tópico usam o banco de dados de exemplo Northwind. Caso não tenha esse banco de dados no seu computador de desenvolvimento, você poderá baixá-lo no Centro de Download da Microsoft. Para obter as instruções, consulte Baixar Bancos de Dados de Exemplo.
Observação
Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.
Crie uma conexão com um banco de dados.
No Visual Studio, abra o Gerenciador de Servidores/Gerenciador de Banco de Dados clicando em Gerenciador de Servidores/Gerenciador de Banco de Dados no menu Exibir.
Clique com o botão direito do mouse em Conexões de Dados no Gerenciador de Servidores/Gerenciador de Banco de Dados e, em seguida, clique em Adicionar Conexão.
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
No Visual Studio, no menu Arquivo, aponte para Novo e clique em Projeto. Selecione Aplicativo do Windows Forms no Visual Basic como o tipo de projeto.
No menu Projeto , clique em Adicionar Novo Item. Selecione o modelo de item Classes LINQ to SQL.
Atribua um nome ao arquivo
northwind.dbml
. Clique em Adicionar. O Designer Relacional de Objetos (Object Relational Designer) é aberto para o arquivo northwind.dbml.
Para adicionar tabelas à consulta ao Designer Relacional de Objetos
No Gerenciador de Servidores/Gerenciador de Banco de Dados, expanda a conexão com o banco de dados Northwind. Expanda a pasta Tabelas .
Se você tiver fechado o Designer Relacional de Objetos, poderá reabri-lo clicando duas vezes no arquivo northwind.dbml que adicionou anteriormente.
Clique na tabela Customer e arraste-a para o painel esquerdo do designer. Clique na tabela Orders e arraste-a para o painel esquerdo do designer.
O designer cria objetos
Customer
eOrder
para seu projeto. Observe que o designer detecta automaticamente relações entre as tabelas e cria propriedades filho para objetos relacionados. Por exemplo, o IntelliSense mostrará que o objetoCustomer
tem uma propriedadeOrders
para todos os pedidos relacionados a esse cliente.Salve suas alterações e feche o designer.
Salve seu projeto.
Adicione código para consultar o banco de dados e exibir os resultados
Na Caixa de Ferramentas, arraste um controle DataGridView para o Windows Form padrão para seu projeto, Form1.
Clique duas vezes no Form1 para adicionar código ao evento
Load
do formulário.Quando você adicionou tabelas ao Designer Relacional de Objetos, ele adicionou um objeto DataContext ao seu projeto. Este objeto contém o código que você precisa ter para acessar essas tabelas, além de objetos e coleções individuais para cada tabela. O objeto DataContext do projeto é nomeado com base no nome do arquivo .dbml. Para este projeto, o objeto DataContext é chamado
northwindDataContext
.Você pode criar uma instância do DataContextno seu código e consultar as tabelas especificadas pelo Designer Relacional de Objetos.
Adicione o seguinte código ao evento
Load
. Esse código consulta as tabelas expostas como propriedades do contexto de dados e determina os valores mínimos e máximos para os resultados. O exemplo usa a cláusulaAggregate
para consultar um único resultado e a cláusulaGroup 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
Pressione F5 para executar seu projeto e exibir os resultados.