Como contar, somar ou média de dados usando LINQ (Visual Basic)

O LINQ (Language-Integrated Query) 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 conta, soma e calcula a média dos resultados usando as Aggregate cláusulas e Group By . Para obter mais informações, consulte Cláusula agregada e Agrupar por cláusula.

Os exemplos neste tópico usam o banco de dados de exemplo Northwind. Se não tiver esta base de dados no computador de desenvolvimento, pode transferi-la a partir do Centro de Transferências da Microsoft. Para obter instruções, consulte Download de bancos de dados de exemplo.

Nota

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.

Para criar uma conexão com um banco de dados

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

  2. Clique com o botão direito do rato em Ligações de Dados no Explorador de Bases de Dados do Explorador/ de Servidores 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. Dê o nome northwind.dbml ao ficheiro. Clique em Adicionar. O Object Relational Designer (O/R Designer) é aberto para o arquivo northwind.dbml.

Para adicionar tabelas à consulta ao O/R Designer

  1. No Gerenciador de Bancos de Dados do Gerenciador/de Servidores, 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 filho para objetos relacionados. Por exemplo, o IntelliSense mostrará que o Customer objeto tem uma Orders propriedade para todos os pedidos relacionados a esse cliente.

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

  4. Guarde o seu projeto.

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

  1. Na caixa de ferramentas, arraste um DataGridView controle para o Windows Form padrão para seu projeto, Form1.

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

  3. Quando você adicionou tabelas ao O/R Designer, o designer adicionou um DataContext objeto para seu projeto. Este objeto contém o código que você deve ter para acessar essas tabelas e para acessar objetos e coleções individuais para cada tabela. O DataContext objeto para seu projeto é nomeado com base no nome do seu arquivo .dbml. Para este projeto, o DataContext objeto é 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 Load evento para consultar as tabelas que são expostas como propriedades do seu DataContext e conte, soma e média dos resultados. O exemplo usa a Aggregate cláusula para consultar um único resultado e a Group By cláusula para mostrar uma média para 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()
    
  4. Pressione F5 para executar seu projeto e visualizar os resultados.

Consulte também