Compartilhar via


Como unir usando chaves compostas (Guia de Programação em C#)

Este exemplo mostra como executar as operações de associação na qual você deseja usar mais de uma chave para definir uma correspondência. Isso é realizado usando uma chave composta. Você cria uma composição nomeada ou chave como um tipo anônimo digitado com os valores que você deseja comparar. Se a variável de consulta será transmitida através de limites de método, use um tipo nomeado que substitui o Equals e GetHashCode para a chave. Os nomes das propriedades e a ordem em que eles ocorrem, devem ser idênticos em cada chave.

Exemplo

O exemplo a seguir demonstra como usar uma chave composta para associar dados de três tabelas:

var query = from o in db.Orders
    from p in db.Products
    join d in db.OrderDetails 
        on new {o.OrderID, p.ProductID} equals new {d.OrderID, 
        d.ProductID} into details
        from d in details
        select new {o.OrderID, p.ProductID, d.UnitPrice};

Inferência de tipos em chaves compostas depende dos nomes das propriedades em que as chaves e a ordem em que eles ocorrem. Se as propriedades em seqüências de código-fonte não tiverem os mesmos nomes, você deve atribuir novos nomes nas chaves. Por exemplo, se a Orders tabela e OrderDetails cada tabela usado nomes diferentes para suas colunas, você pode criar as chaves compostas, atribuindo nomes idênticos nos tipos anônimos:

join...on new {Name = o.CustomerName, ID = o.CustID} equals 
    new {Name = d.CustName, ID = d.CustID }

As chaves compostas também podem ser usadas em um group cláusula.

Compilando o código

  • Para compilar e executar esse código, execute estas etapas:

  • Abrir Como se conectar ao banco de dados Northwind e siga as instruções para configurar o projeto e criar a conexão de banco de dados. Para obter mais informações, consulte Como instalar bancos de dados de exemplo.

  • No samples.cs, crie um novo método vazio que leva um parâmetro de entrada do Northwind chamado db (semelhante a outros métodos nesse arquivo). Cole o código deste exemplo para o corpo do método.

  • Modificar Program. cs para chamar o novo método de Main.

  • Pressione F5 para compilar e executar a consulta.

Consulte também

Referência

Cláusula join (Referência de C#)

Cláusula group (Referência de C#)

Conceitos

Expressões de consulta LINQ (Guia de Programação em C#)