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#)