Compartilhar via


Como: associação usando chaves compostas (guia de programação do 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 amostra.

  • 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 do LINQ (guia de programação do C#)