Como: unir usando chaves compostas (guia de programação translation from VPE for Csharp)
Este exemplo mostra como realizar operações de unir 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 chave sistema autônomo um tipo anônimo ou nomeado digitado com sistema autônomo valores que você deseja comparar.Se a variável de consulta será passada entre os limites de método, use um tipo nomeado que substitui Equals e GetHashCode para a chave. Os nomes de 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 varia de acordo com os nomes de propriedades nas chaves e a ordem em que eles ocorrem.Se as propriedades nas seqüências de fonte não tem os mesmos nomes, você deve atribuir novos nomes nas chaves.Por exemplo, se o Orders tabela e OrderDetails cada tabela utilizados nomes diferentes para suas colunas, você pode criar chaves compostas, atribuindo nomes idênticos em tipos anônimo:
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 as seguintes etapas:
Abra o LINQ to Northwind de exemplo e siga as instruções para conjunto até o projeto e criar a conexão de banco de dados.
Em Exemplos.cs, crie um novo método vazio que leva um parâmetro de entrada Northwind chamado db (semelhante a outros métodos nesse arquivo).Cole o código deste exemplo o corpo do método.
Modificar programa.cs para chamar o novo método a partir de Main.
Pressione F5 para compilar e executar a consulta.
Consulte também
Conceitos
Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)
Referência
cláusula de unir (translation from VPE for Csharp Reference)
cláusula de agrupar (translation from VPE for Csharp Reference)