Como contar, somar ou média de dados usando LINQ (Visual Basic)
Language-Integrated A consulta (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. O exemplo conta, soma e calcula a média dos resultados usando as cláusulas Aggregate
e Group By
. Para obter mais informações, consulte a cláusula de agregação e a cláusula de agrupamento .
Os exemplos neste artigo usam o banco de dados de exemplo Northwind. Para obter o banco de dados, consulte Baixando bancos de dados de exemplo.
Nota
Seu computador pode mostrar nomes ou locais diferentes 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ê tem e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.
Para criar uma conexão com um banco de dados
No Visual Studio, abra o Gerenciador de Servidores /ou o Gerenciador de Banco de Dados clicando em Gerenciador de Servidores /ou Gerenciador de Banco de Dados no menu Exibição .
Clique com o botão direito 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 LINQ ao arquivo SQL
No Visual Studio, no menu Arquivo, aponte para Novo e clique em Projeto. Selecione o Visual Basic Aplicação Windows Forms como o tipo de projeto.
No menu Project, clique em Adicionar Novo Item. Selecione o modelo de item Classes LINQ to SQL.
Nomeie o arquivo
northwind.dbml
. Clique em Adicionar. O Designer Relacional de Objeto (Designer O/R) é 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ê fechou o Designer O/R, poderá reabri-lo clicando duas vezes no arquivo northwind.dbml que você adicionou anteriormente.
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 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.
Para adicionar 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 O/R, o designer adicionou um objeto DataContext para seu projeto. Esse objeto contém o código que você deve ter para acessar essas tabelas e acessar 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 é nomeado
northwindDataContext
.Você pode criar uma instância do DataContext em seu código e consultar as tabelas especificadas pelo Designer O/R.
Adicione o código a seguir ao evento
Load
para consultar as tabelas que são expostas como propriedades do seu DataContext e contar, somar e calcular a média dos resultados. O exemplo usa a cláusulaAggregate
para consultar um único resultado e a cláusulaGroup By
para mostrar uma média de resultados agrupados.Dim db As New northwindDataContext Dim msg = "" Dim londonCustomerCount = Aggregate cust In db.Customers Where cust.City = "London" Into Count() msg &= "Count of London Customers: " & londonCustomerCount & vbCrLf Dim averageOrderCount = Aggregate cust In db.Customers Where cust.City = "London" Into Average(cust.Orders.Count) msg &= "Average number of Orders per customer: " & averageOrderCount & vbCrLf Dim venezuelaTotalOrders = Aggregate cust In db.Customers Where cust.Country = "Venezuela" Into Sum(cust.Orders.Count) msg &= "Total number of orders from Customers in Venezuela: " & venezuelaTotalOrders & vbCrLf MsgBox(msg) Dim averageCustomersByCity = From cust In db.Customers Group By cust.City Into Average(cust.Orders.Count) Order By Average DataGridView1.DataSource = averageCustomersByCity 'Another way to grab the count and sum londonCustomerCount = (From cust in db.Customers Where cust.City = "London").Count() venezuelaTotalOrders = (From cust in db.Customers Where cust.Country = "Venezuela" Select cust.Orders).Sum()
Pressione F5 para executar seu projeto e exibir os resultados.